Ruby:戻り値の使い方

初心者向け:戻り値の使い方の基本

前回はメソッドの外で定義された変数をメソッドの中で使う、引数について解説しました。 今回は、逆にメソッドの中で定義された変数を、メソッドの外で使う方法を解説します。 メソッドの中で定義された変数を、メソッドの外で普通に呼び出そうとすると、エラーになります。

def favorite
  fruit = "apple"
end

puts fruit   #=>実行するとエラーになる

これは、スコープといって、変数が有効な範囲が決まっているためです。 では、メソッドの中のものを外から利用するにはどうするかと言いますと、メソッドの戻り値を使います。 メソッドは呼び出された後に、最後の式の結果が呼び出されたメソッドそのものに代入されるという性質があります。 この代入された値を戻り値といいます。

def favorite
  fruit = "apple" #メソッドの最後の式。
end

puts favorite  #メソッド呼び出し。最後の式の結果(戻り値)が代入されている。
# =>apple

最後の式の結果が代入されるので、2つ以上式があるときはこうなります。

def favorite
  fruit = "apple"
  sport = "baseball"
end

puts favorite #=>baseball

配列やハッシュを戻り値として渡すこともできます。

def favorite
  list = ["apple", "baseball", "cream"]
end

puts favorite #戻り値として配列が入っている。
#=>apple
   baseball
   cream

別の処理を挟むときは、メソッドの最後に配列を呼び出してやれば戻り値に配列を渡せます。

def favorite
  list = ["apple", "baseball", "cream"] #配列を作る
  puts "hello"  #戻り値としたくない処理
  list   #最後に配列を呼び出しておく(この時点では表示されない)
end

puts favorite   #呼び出し後戻り値として配列が入り、表示される。
#=>hello
   apple
   baseball
   cream