#Struct is used because Ruby's OpenStruct, as its name suggests, will execute without causing an exception even for methods that do not exist
わりと両者の使い勝手が違って、最初戸惑う
Struct
クラスを定義してから、インスタンスを作る (的なイメージ)
klass = Struct.new(:some)
# => #<Class:0x00007ffc0f885708>
s = klass.new(:what)
# => #<struct some=:what>
s.some
# => :what
s.wow
NoMethodError: undefined method `wow' for #<struct some={:some=>:what}>
from (pry):4:in `__pry__'
OpenStruct
いきなりインスタンスを作れる (的なイメージ)
s = OpenStruct.new(some: :what)
# => #<OpenStruct some=:what>
s.some
# => :what
s.wow
# => nil
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。