【初心者向け】Ruby _1 って何?(番号指定パラメータ)

こんにちは、技術部のNです。
皆さんは、コードの中で _1 という記載を見たことがあるでしょうか?これはRuby2.7で導入された番号指定パラメータ(numbered parameter)というものです。
番号指定パラメータを使うと、ブロックパラメータ(下記の|item|にあたる)を使う代わりに、_1から_9までの番号をパラメータの順で使うことができます。

例えば、配列内の文字を大文字に変える処理について見てみましょう。 番号指定パラメータを使わない場合は、
				
					[“a”, “b”, “c”].map { |item| item.upcase }

=> [“A”, “B”, “C”]
				
			
のようになります。 番号指定パラメータを使う場合、
				
					[“a”, “b”, “c”].map { _1.upcase }

=> [“A”, “B”, “C”]
				
			
となります。 ブロックパラメータが2つの場合を見てみましょう。 都市名にインデックスを付けて、配列に入れる処理です。 番号指定パラメータを使わない場合
				
					["tokyo", "osaka", "fukuoka"].map.with_index { |pre, n| [n, pre] }

=> [[0, "tokyo"], [1, "osaka"], [2, "fukuoka"]]
				
			
番号指定パラメータを使う場合
				
					["tokyo", "osaka", "fukuoka"].map.with_index { [_2, _1] }

=> [[0, "tokyo"], [1, "osaka"], [2, "fukuoka"]]
				
			

のようになります。記述を簡略化できますね。

色々な記述方法を知っておくことで、プログラムに適した書き方が出来ます。
是非的確に使用してみてください。
最後までお読みいただきありがとうございました。

参考
伊藤 淳一, プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus), 技術評論社, 2021

スーパーソフトウエアの採用情報

あなたが活躍できるフィールドと充実した育成環境があります

blank
blank