Ruby version: 2.3.1Инициализация Ruby Structs с аргументами ключевого слова
Не похоже, что Ruby Structs можно объявить с помощью параметров ключевого слова. Есть ли способ сделать это в пределах Struct
?
Пример:
MyStruct = Struct.new(:fname, :lname)
=> MyStruct
my_struct = MyStruct.new(fname: 'first', lname: 'last')
=> <struct MyStruct fname={:fname=>"first", :lname=>"last"}, lname=nil>
my_struct.fname
=> {:fname=>"first", :lname=>"last"}
my_struct.lname
=> nil
Хорошо, это имеет смысл. Тем не менее, я все еще не уверен, как заставить аргументы ключевого слова работать. Я могу передать два хэша, то есть 'MyStruct.new ({fname: 'first'}, {lname: 'last'}), но это даст мне хеш для работы вместо строки. – user3162553
Я, кажется, пропустил ваш трехмесячный комментарий. 'my_struct = MyStruct.new ({fname: 'first'}, {lname: 'last'}); my_struct.fname # => {: fname => "first"}; my_struct.lname # => {: lname => "last"} '. Отвечает ли это на ваш вопрос? –
Я написал драгоценный камень (https://github.com/rohitpaulk/named_struct), который определяет класс «NamedStruct», который наследует от Struct, и изменяет поведение инициализации вместо аргументов ключевого слова. – rohitpaulk