/ / Používanie klenotu Ruby BinData na čítanie možností - ruby, binary-data, choice, bindata

Použitie drahokamu Ruby BinData na čítanie možností - ruby, binárne údaje, výber, bindata

Implementujem dátovú štruktúru pomocou Ruby a BinData klenot. Musím implementovať a Choice hodnotu. Podľa dokumentácie BinData možno výber implementovať ako:

class MyData < BinData::Record
uint8  :type
choice :data, :selection => :type do
type key #option 1
type key #option 2
end
end

Vo výbere musím mať predvolenú možnosť:

class MyRecord < BinData::Record
uint8 :type
choice :mydata, :selection => :type do
uint32 0
uint16 1
end
end

Ako sa to dá vyriešiť, ak type nie je 0 alebo 1 vo vyššie uvedenom kóde?

odpovede:

5 pre odpoveď č. 1

BinData 1.4.1 to natívne rieši pomocou :default

class MyRecord < BinData::Record
uint8 :data_type
choice :mydata, :selection => :data_type do
uint32 1
uint16 2
string :default, :read_length => 4
end
end

2 pre odpoveď č. 2

No našiel som prácu. Akákoľvek iná možnosť je tiež veľmi vítaná.

class MyRecord < BinData::Record
uint8 :data_type
choice :mydata, :selection => :get_choice do
uint32 1
uint16 2
string 255, :read_length => 4
end

def get_choice
choices = [1, 2]
if choices.include? data_type
return data_type
else
return 255
end
end
end

-1 pre odpoveď č. 3

by ste mohli nastaviť predvolené v konštruktore snáď ...