1

初期化中に BinData::Record に設定されているフィールドを検証する方法はありますか? 各パラメーターの check_value は、入力ストリームから読み取った後にのみ評価されるようです

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

Foo.new(:bar=>5)  #Does not raise validation exception

「to_binary_s」で読み取りを行う「initialize_instance」を追加しようとしましたが、おそらくオブジェクトが完全にインスタンス化されていないため、他のエラーがスローされます。

4

1 に答える 1

0

メソッドを書きdef initializeます。次に、検証をその中に入れます。初期化はオブジェクトのインスタンス化で実行されるため、チェックが発生する必要があります。

于 2012-06-01T12:19:56.427 に答える