2
Rubyバージョン:2.3.1Ruby Structsをキーワード引数で初期化する
Ruby Structsをキーワードparamsで宣言することはできません。 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'})'という2つのハッシュで渡すことができますが、これは文字列ではなくハッシュ値を渡します。 – user3162553
3ヶ月前のコメントを見逃してしまったようです。 'my_struct = MyStruct.new({fname: 'first'}、{lname: 'last'}); my_struct.fname#=> {:fname => "first"}; my_struct.lname#=> {:lname => "last"} '。それはあなたの質問に答えますか? –
私はStructから継承する 'NamedStruct'クラスを定義するgem(https://github.com/rohitpaulk/named_struct)を書き、代わりにキーワード引数を受け入れるように初期化動作を変更しました。 – rohitpaulk