带有可选参数的方法

时间:2016-03-02 12:57:57

标签: ruby methods

有没有办法制作一个可以接受参数的方法,但也可以在没有参数的情况下调用,在这种情况下,参数被视为nil,如下所示?

some_func(variable)

some_func

3 个答案:

答案 0 :(得分:71)

def some_func(variable = nil)
  ...
end

答案 1 :(得分:16)

除了使用默认值的更明显的参数选项之外, Sawa 已经显示,在某些情况下使用数组或散列可能很方便。两种解决方案都将 nil 保留为参数。

<强> 1。接收为数组:

def some_func(*args)
  puts args.count
end

some_func("x", nil)
# 2

<强> 2。发送和接收哈希:

def some_func(**args)
  puts args.count
end

some_func(a: "x", b: nil)
# 2

答案 2 :(得分:5)

您还可以使用哈希作为参数并拥有更多自由:

def print_arg(args = {})
  if args.has_key?(:age)
    puts args[:age]
  end
end

print_arg 
# => 
print_arg(age: 35, weight: 90)
# => 35