🖥

#Ruby の OpenStruct がその名の通り、存在しないメソッドでも 例外を発生させずに実行してしまうので Struct を使う

2019/07/31に公開

#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

https://github.com/YumaInaura/YumaInaura/issues/2271

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-07-31

Discussion