メソッドに複数の値を渡したいし、メソッドから複数の戻り値を貰いたい
ググったら、一発でした。
プログラミング言語 Ruby リファレンスマニュアル
複数の戻り値の渡しかた
def hoge(*z) if z.empty? puts "YES!!" else puts "NO!!" puts z.first end end def hoge2(x,*z) puts x puts z.first end hoge("a","b","c") # => NO!! a hoge() # => YES!! hoge2("d","e","f") # => d e
複数の戻り値の貰いかた
def hoge return 1,2,3 end a = hoge() puts a[0] # => 1 puts a[1] # => 2 puts a[2] # => 3
ちょっと気になったことを
最初の返り値だけ変数に、他は配列に代入なんてできない。
a,b = hoge()
このように返り値を受けると、3番目の引数は受け取ることができない。
bが配列になって、
puts a # >= 1 puts b[0] # >= 2 puts b[1] # >= 3
このようなことにはならない。
正しくは以下。
puts a # >= 1 puts b # >= 2