メソッドとブロックの戻り値

2013-10-25 00:00
ruby

メソッドとブロックの戻り値についてのメモ。

yieldの前に変数を置いて、ブロックの戻り値を受け取ることができます。

ブロックの戻り値は、最後に評価された値です。

def my_method
  a = yield
  puts a + " received"
end

my_method do
  "block message"
end        # "block message received"と表示される

ブロック内でbreakを使うと、引数に指定した値がメソッドの戻り値となります。

def my_method
  a = yield
  puts a + " received"
end

my_method do
  break "block message"
end        # => "block message"

メソッド内でreturnを使い、戻り値を指定することができます。

def my_method
  a = yield
  if a == "block message"
    return "same"
  end
  puts a + " received"
end

my_method do
  "block message"
end        # => "same"

« ユーザ定義クラスの==メソッド(Ruby)floorとtruncate... »