●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

RubyのLambda(ラムダ)とは?Procとの違いも含めてやさしく解説!

Rubyには無名関数(名前のない関数)を作るための便利な構文として、Lambda(ラムダ)があります。 ラムダは Proc と似ていますが、動作の違いが明確にあります。

ラムダとは?

ラムダ(lambda)は、ブロックやProcと同様に、処理のかたまりをオブジェクトとして扱える構文です。 メソッドの引数として渡したり、変数に代入して再利用することができます。

ラムダの定義方法

greet = ->(name) { puts "こんにちは、#{name}さん!" }
greet.call("さくら")  # → こんにちは、さくらさん!

このように、->(引数) { 処理 } という簡潔な構文でラムダを定義できます。 または次のように lambda キーワードでも書けます:

greet = lambda { |name| puts "こんにちは、#{name}さん!" }

ラムダとProcの違い

項目lambdaProc.new
引数の数厳密(数が合わないとエラー)ゆるい(不足してもnil)
returnの動作ラムダ内で return → 呼び出し元へ戻るProc内で return → 定義元のメソッドも終了
構文-> {...} または lambda {}Proc.new {}

引数の扱い(厳密)

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

puts add.call(2, 3)      # → 5
puts add.call(1)         # → エラー:引数が足りない

lambda引数の数を正確にチェックします。 これはコードの安全性を高めるのに役立ちます。

returnの違い

def test_lambda
  l = -> { return "ラムダのreturn" }
  l.call
  "メソッドの最後"
end

puts test_lambda  # → メソッドの最後
def test_proc
  p = Proc.new { return "プロックのreturn" }
  p.call
  "メソッドの最後"
end

puts test_proc  # → プロックのreturn

ラムダの returnラムダ内で完結しますが、Proc.new の return は メソッドごと終了させてしまいます。

ラムダをメソッドの引数として渡す

def twice(proc)
  proc.call
  proc.call
end

greet = -> { puts "こんにちは!" }
twice(greet)

ブロックからラムダへの変換(&記号)

def run(&block)
  puts "開始"
  block.call
  puts "終了"
end

run { puts "処理中…" }

& を使えば、ブロックをラムダ(Proc)として受け取って操作できます。

まとめ

RubyのLambda(ラムダ)は、引数とreturnの扱いが厳密なProcの一種です。 コードの安全性を重視したい場合や、ブロックを明示的に制御したいときに便利です。

まずは -> 記法で簡単なラムダを定義し、Procとの違いを実際に試してみましょう!

 

Ruby関連用語集

−−−−−  Ruby  −−−−−

Rubyのオブジェクト指向とは?クラスやメソッドの仕組みをわかりやすく解説

Rubyのクラス(Class)とは?オブジェクトの設計図を学ぼう

Rubyのモジュール(Module)とは?コードを整理・共有する仕組みを学ぼう!

Rubyのメソッド(Method)とは?定義と使い方をやさしく解説

Rubyのブロック(Block)とは?繰り返しやコールバック処理に使える便利な仕組み

Rubyのイテレータ(Iterator)とは?繰り返し処理の基本をマスターしよう!

RubyのEnumerableモジュールとは?便利な繰り返し処理を一気に習得!

RubyのProc(プロック)とは?ブロックをオブジェクト化して使いこなそう

RubyのLambda(ラムダ)とは?Procとの違いも含めてやさしく解説!

Rubyのシンボル(Symbol)とは?文字列との違いと使いどころをわかりやすく解説

Rubyのハッシュ(Hash)とは?キーと値のペアでデータを扱う基本構造

Rubyの配列(Array)とは?基本構文と便利な操作方法をマスターしよう!

Rubyのスコープ(Scope)とは?変数の見える範囲を理解しよう

Rubyのインスタンス変数(@変数)とは?クラスでデータを保持する基本

Rubyのクラス変数(@@変数)とは?全インスタンスで共有する値を管理する

Rubyの定数(Constant)とは?値を固定するための書き方と使い方

Rubyのグローバル変数($変数)とは?使い方と注意点をやさしく解説

Rubyのself(自己参照)とは?使い方と意味をやさしく解説!

Rubyの継承(Inheritance)とは?コードの再利用と拡張の基本

Rubyのミックスイン(Mixin)とは?モジュールで機能を共有する方法

Rubyのメソッドのオーバーライド(Override)とは?継承したメソッドを再定義しよう

Rubyの例外処理(Exception Handling)とは?エラー発生時の安全な対処法

Rubyのbegin-rescue-end構文とは?エラーを安全に処理する基本構文

Rubyのyield(ブロック呼び出し)とは?ブロックの使い方と柔軟なメソッド設計

Rubyのrequire / loadとは?外部ファイルの読み込み方法と使い分け

Rubyのgem(RubyGems)とは?便利なライブラリの管理方法を解説!

Bundlerとは?Rubyのgemを簡単に管理できる便利ツール

RubyのRakeとは?ビルドやタスクを自動化する便利ツールを解説!

IRB(Interactive Ruby)とは?Rubyを手軽に試せる対話型ツール

Rails(Ruby on Rails)とは?Webアプリ開発の強力フレームワーク