We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hash#each がアンパサンドを使ってブロックを渡すときの動作が変更されています。
2.7 までは、キーと値で yield するか key-value 配列で yield するかはブロックパラメータの個数で決まります。ブロックなしの場合はそのように yield する Enumerator を返します。
3.0 からは、直接ブロックありの場合はブロックパラメータの個数で決まりますが、アンパサンドの場合は常に key-value 配列で yield します。ブロックなしの場合はそのように yield する Enumerator を返します。
# NG: 2引数を受ける lambda を渡すのがエラーになった { foo: 100 }.each(&->(k,v){ p [k, v] }) #~> wrong number of arguments (given 1, expected 2) (ArgumentError) # OK: 配列として受ける { foo: 100 }.each(&->(ary){ p [ary[0], ary[1]] }) #=> [:foo, 100] # OK: 配列として受け、分配する { foo: 100 }.each(&->((k,v)){ p [k, v] }) #=> [:foo, 100] # OK: 直接ブロックは変更なし(2個なら key と value) { foo: 100 }.each {|k,v| p [k, v] } #=> [:foo, 100] # OK: 直接ブロックは変更なし(1個なら key-value 配列) { foo: 100 }.each {|(k,v)| p [k, v] } #=> [:foo, 100]
参照: サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 2 - 新機能と変更点の総まとめ
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Hash#each がアンパサンドを使ってブロックを渡すときの動作が変更されています。
2.7 までは、キーと値で yield するか key-value 配列で yield するかはブロックパラメータの個数で決まります。ブロックなしの場合はそのように yield する Enumerator を返します。
3.0 からは、直接ブロックありの場合はブロックパラメータの個数で決まりますが、アンパサンドの場合は常に key-value 配列で yield します。ブロックなしの場合はそのように yield する Enumerator を返します。
参照: サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 2 - 新機能と変更点の総まとめ
The text was updated successfully, but these errors were encountered: