Ruby 初始化时验证BinData::记录

Ruby 初始化时验证BinData::记录,ruby,bindata,Ruby,Bindata,是否有方法在初始化期间验证BinData::记录上设置的字段?每个参数的check_值似乎只有在从输入流读取后才进行计算 class Foo < BinData::Record uint8 :bar,:check_value=>lambda{raise 'Here is an error'} end Foo.new(:bar=>5) #Does not raise validation exception 我尝试添加一个“initialize_instance”,它

是否有方法在初始化期间验证BinData::记录上设置的字段?每个参数的check_值似乎只有在从输入流读取后才进行计算

class Foo < BinData::Record
   uint8 :bar,:check_value=>lambda{raise 'Here is an error'}
end

Foo.new(:bar=>5)  #Does not raise validation exception
我尝试添加一个“initialize_instance”,它在其中执行“to_binary_s”的读取,但它会引发一些其他错误,可能是因为对象没有完全实例化。

编写一个def initialize方法。然后把验证放进去。
初始化是在对象实例化时运行的,因此必须进行检查。

对不起,它没有那么简单。库检查初始化方法是否已写入并执行其他操作如果无法使用bindata记录覆盖initialize,则建议改为创建方法initialize\u实例。