タグ別アーカイブ: def

ruby

ruby 関数定義 メソッド引数「*」が空の時

下記の関数「foo3」について
foo3に、引数を一つ渡した場合、arrの形が知りたかったので、関数定義についてまとめました。
結果は、配列として帰ってきていました。

関数の作り方:基本

# 基本
def foo(name)
  puts name
end

# 初期値
def foo2(name = "momo")
  puts name
end

# 引数の数を不定
def foo3(a, *arr)
  print [a, arr]
end

# 引数の数を不定 ver2
def foo4(a, *arr, b)
  p a, arr, b
end


foo("hogehoge") # => hogehoge

foo2() # => momo
foo2("hogehoge") # => hogehoge

foo3(1) # => [1, []]
foo3(1, 2, 3, 4, 5) # => [1, [2, 3, 4, 5]]

# foo4(1) # エラー
foo4(1, 2, 3, 4, 5) # => [1, [2, 3, 4], 5]

関数の作り方:ハッシュ引数

# 引数にキーワード
def foo5(x: 0, y: 0, z: 0)
  print "x:", x,"  y:", y,"  z:", z
end

# 引数にキーワード(配列)
def foo6(x: 0, y: 0, z: 0)
  p x[1]
end

# 引数にキーワード(配列)
def foo7(x: 0, y: 0, z: 0, **arr)
  p [x, y, z, arr]
end


foo5(y: 2, x: 1, z: 3) # => x:1  y:2  z:3
foo5(y: 4) # => x:0  y:4  z:0

foo6(x: [5, 6]) # => 6

foo7(x: 2, v: 3, z: 4, w: 5) # => [2, 0, 4, {:v=>3, :w=>5}]

書籍 たのしいRuby 第4版