[ruby on rails] fetch vs dig

Fetch

取不到值時,會以預設值取代,但沒設定預設值會出現 Error

Hash / Array 皆有實作 #fetch

  • Array#fetch
a = [ 11, 22, 33, 44 ]
a.fetch(1)               #=> 22
a.fetch(-1)              #=> 44
a.fetch(4, 'cat')        #=> "cat"
a.fetch(4) { |i| i*i }   #=> 16
a.fetch(5)               #=> IndexError
  • Hash#fetch
h = { "a" => 100, "b" => 200 }
h.fetch("a")                            #=> 100
h.fetch("z", "go fish")                 #=> "go fish"
h.fetch("z") { |el| "go fish, #{el}"}   #=> "go fish, z"
h.fetch("z")                            #=> KeyError

Dig

適用在多層

跟 #try 一樣,如果其中一層為 nil,會回傳 nil 而不會出現 Error

Ruby 2.3.0

Hash / Array 皆

Guess you like

Origin blog.csdn.net/qq_41037744/article/details/113752909