ラムダ
引数の個数を厳密に扱う Proc です。
「ラムダ」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
引数の数が厳密なProc
lambdaは、通常のメソッドに近い動作をする特殊な種類のProcです。引数の数を検査し、returnを通常どおり扱います。予測しやすいメソッドのような動作が必要な場合に使用します。
square = lambda { |x| x * x }
puts square.call(6)スタビ―ラムダ
->による矢印構文は、「スタビ―ラムダ」という愛称で呼ばれ、ラムダを記述する最も一般的な方法です。パラメータは括弧内に記述します。
add = ->(a, b) { a + b }
puts add.call(4, 5)ラムダの呼び出し
ラムダはProcと同じ呼び出し形式に対応しています。.call、.()、および[ ]を使えます。
triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]厳密な引数チェック
Procとは異なり、ラムダに正しくない数の引数を渡すとArgumentErrorが発生します。これにより、バグを早期に発見できます。
greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
greet.call
rescue ArgumentError => e
puts "Error: #{e.message}"
endreturnはラムダ内にとどまる
ラムダ内のreturnはラムダだけを終了させ、その後も実行が続きます。これはメソッドの動作と同じです。
def demo
l = -> { return 10 }
l.call
20 # this runs
end
puts demoラムダかどうかを確認する
ProcとラムダはどちらもProcのインスタンスです。lambda?を使うと、両者を区別できます。
l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?引数のないラムダ
ラムダがパラメータを取らない場合は、括弧を省略できます。
now = -> { Time.now.year }
puts "Year: #{now.call}"複数行のラムダ
ラムダは複数行にわたって記述できます。最後の式が戻り値になります。
classify = ->(n) {
return "zero" if n.zero?
n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)ラムダをメソッドに渡す
Procと同じように、ラムダは&でブロックに変換できます。そのため、mapやselectなどのメソッドにそのまま渡せます。
doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)戻り値としてのラムダ
メソッドでラムダを作成して返すことができます。これにより、用途に合わせた関数をその場で作成できます。
def multiplier(by)
->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)まとめ
ラムダは、厳密な動作をするメソッドのようなProcです。
lambda { }または->(args) { }で記述します。- 引数の数を検証し、
returnをラムダ内にとどめます。 - 正確な動作が重要な場合や、返す関数を作成する場合に使用します。
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)理解度チェック
ラムダについての理解度を確認しましょう。
振り返り
ラムダについて学んだことを振り返りましょう。
- ラムダは引数の数が厳密なProcで、
->を使って記述します。 - 引数の数を検証します。
returnはラムダだけを終了させます。lambda?で通常のProcと区別できます。
area = ->(w, h) { w * h }
puts area.call(3, 4)よくある質問
「ラムダ」レッスンは無料ですか?
はい。「ラムダ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「ラムダ」で何を学びますか?
引数の個数を厳密に扱う Proc です。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ラムダ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。