【Ruby3.x】NilClass::&()メソッドの使い方
&メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
&メソッドは、NilClassのインスタンス(nilオブジェクト)が、メソッド呼び出しの際にブロック引数として渡される場合の振る舞いを定義するものです。
Ruby 3の環境において、nilオブジェクトに対して&を付与してブロック引数として使用する(例: some_method(&nil))と、そのメソッドにはブロックが渡されなかったものとして扱われます。これは、メソッドがブロックをまったく受け取らなかった場合と全く同じ結果になります。
以前のRubyのバージョンでは、このようにnilをブロック引数として渡そうとすると、ArgumentErrorが発生し、プログラムが停止していました。しかし、Ruby 3からはこの挙動が変更され、エラーにならずに「ブロックが渡されない」という状態として正常に処理されるようになりました。
この変更により、オプションでブロックを受け取るメソッドに対して、明示的にブロックを渡さない意図を示すために&nilと記述することが可能になりました。これにより、コードの記述がより柔軟になります。ただし、メソッドがブロックの提供を必須としている場合には、&nilを渡すことで、メソッド内でブロックが存在しないことによるエラーが発生する可能性がありますので、注意が必要です。
構文(syntax)
1nil & true
引数(parameters)
req
- obj: オブジェクト: & 演算子の右辺に指定するオブジェクト
戻り値(return)
NilClass
NilClass の & メソッドは、nil オブジェクト自身を返します。