問題の原因
• キーワードとハッシュを自動変換していること
def foo(h)
p h #=>{:k=>42}
end
foo(k: 42)
def foo(k: 1)
p k #=> 42
end
foo({ k: 42 })
キーワード➔ハッシュ ハッシュ➔キーワード
7
Slide 8
Slide 8 text
Ruby 3での解決提案
• キーワードハッシュの変換をやめる #14183
– キーワードかハッシュか、明示してください
注意:Ruby 3の決定事項ではない
def foo(h)
p h #=>{:k=>42}
end
foo(k: 42)
def foo(k: 1)
p k #=> 42
end
foo({ k: 42 })
def foo(h)
p h[:k] #=> 42
end
foo({ k: 42 })
def foo(h)
p h #=>{:k=>42}
end
foo({ k: 42 })
def foo(**h)
p h #=>{:k=>42}
end
foo(k: 42)
def foo(k: 1)
p k #=> 42
end
foo(**{ k: 42 })
8