{category}

Ruby - lambda

->

ステーブルプロック(コードブロックと関数オブジェクト

意味 ラムダリテラル


->とは?

->(ステーブルプロック)は、ラムダ式を作成するための短縮記法です。これを使うと、より簡潔にラムダ(特殊なProcオブジェクト)を定義できます。

->の具体的な使い方

ラムダリテラルの基本例

calculate = ->(x, y) { x + y }
puts calculate.call(5, 3)
puts calculate[7, 2]  # []を使った呼び出しも可能

👇出力結果

8
9

この例では、2つの数値を加算するラムダを定義しています。callメソッドや[]を使って呼び出すことができます。

ラムダを使った高階関数の例

def apply_operation(x, y, operation)
  operation.call(x, y)
end

add = ->(a, b) { a + b }
subtract = ->(a, b) { a - b }
multiply = ->(a, b) { a * b }

puts "10 + 5 = #{apply_operation(10, 5, add)}"
puts "10 - 5 = #{apply_operation(10, 5, subtract)}"
puts "10 * 5 = #{apply_operation(10, 5, multiply)}"

👇出力結果

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50

この例では、ラムダを使って異なる演算を定義し、それらを高階関数に渡しています。apply_operationメソッドは、2つの数値と操作を表すラムダを受け取り、その操作を実行します。

->に関するよくある質問

Q. ->とlambdaの違いは?
A. ->はlambdaのショートカット記法です。機能的には同じですが、->の方がより簡潔に書くことができます。lambda { |x| x * 2 } と ->(x) { x * 2 } は同じ意味になります。
Q. ラムダとProcの違いは?
A. ラムダはProcの特殊な形式です。主な違いは、引数のチェックの厳密さと、return文の挙動です。ラムダは引数の数を厳密にチェックし、returnはラムダ自体からの戻り値となります。一方、通常のProcは引数のチェックが緩く、returnは周囲のメソッドから抜けてしまいます。

->が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyの->やblock_given?、binding、proc、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

block_given?

ブロックの有無を確認

種類: ブロックの基本

binding

実行環境の情報を保持

種類: クロージャ

proc

Procオブジェクトを生成するメソッド

種類: Procオブジェクト

Digest

ハッシュ関数ライブラリ

種類: 暗号化

readline

1行読み込み(改行なし)

種類: 標準入出力