以下の例では、BinData::Array 要素を含む新しい BinData::Record を作成でき、そのクラス タイプの新しいオブジェクトからバイナリ文字列を作成できます。ただし、そのバイナリ文字列から新しいオブジェクトをインスタンス化しようとすると、新しいオブジェクトが正しく作成されません。
require 'bindata'
class IntegerArray < BinData::Array
uint16le initial_value: 0
end
class Test < BinData::Record
integer_array :field
end
obj = Test.new
obj[:field] << 15
str = obj.to_binary_s
puts obj.inspect # {"field"=>[15]}
puts str.inspect # "\x0F\x00"
puts str.unpack("S<*") # 15
newobj = Test.read(str)
puts newobj.inspect # {"field"=>[]}
同じ結果で配列の initial_value を削除しようとしました。よろしくお願いします。