定义 Class 个对象验证

Define Class object validations

是否有一种本机方法来定义 Crystal 对象的验证? 让我们考虑这个 class:

class Person

  def initialize(@age : Int32) 

  end

end

如何添加简单的验证 if age < 18? 例如:

Person.new(10)
>> Error: attibute 'age' should be greater than 18

我看到第 3 方库在执行此操作,但我想避免添加依赖项。

没有实现运行时验证的自动化方法,但有一种惯用的方法:

def initialize(@age)
  raise ArgumentError.new("age must be 18 or more") if @age < 18
end