たんたんとがんばる

ruby, Ruby on Rails, React etc.

settingslogic を読む(2)

Gemを読み始めようと思って書き始めたシリーズ
概要はこの方がまとめてくださっているので、自分が読んで悩んだところやパッとわからなかったことをメモする

qiita.com

  • 前者はArrayやHashのgetter、後者はsetterメソッド
def [](key)
  ...
end

def []=(key, val)
  ...
end
  • 呼び出し方
hoge[:hoge.to_s]
=> "fuga"

hoge[:hoge] = "fuga"
  • define_methodより、class_evalの方が良いらしい(パフォーマンス?)
  • if文と代入を一緒にする

こういうのちょっとかっこいい

@#{key} = if value.is_a?(Hash)
  self.class.new(value, "'#{key}' section in #{@section}")
elsif value.is_a?(Array) && value.all?{|v| v.is_a? Hash}
  value.map{|v| self.class.new(v)}
else
  value
end
irb(main):019:0* hoge = if true
irb(main):020:1>   "true!"
irb(main):021:1> else
irb(main):022:1*   "false!"
irb(main):023:1> end
=> "true!"
irb(main):024:0> hoge
=> "true!"
  • Hashのメソッドを覚えていなかった、replaceとかfetchとか