【初心者向け】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
関連記事
- 2023-04-13
- テクノロジー