谁能解释一下对参数使用默认值和使用关键字参数之间的区别?
默认值
def test1(var1, var2="2", var3=3)
puts "#{var1} #{var2} #{var3}"
end
test1(1) # => 1 2 3
test1(1, "2", 3) # => 1 2 3
关键字参数
def test2(var1, var2: "2", var3: 3)
puts "#{var1} #{var2} #{var3}"
end
test2(1) # => 1 2 3
test2(1, "2", 3) # => 1 2 3
我看不出它们之间有任何区别,但我觉得我遗漏了一些东西,因为我读过关键字参数是 ruby 2.0 期待已久的功能
最佳答案
方法主体看起来非常相似,但主要区别在于调用方法的方式。
这两种方法都可以不带参数调用,因为您指定了默认值,所以调用这些方法的代码可能如下所示:
test1
test2
但是如果你想在调用方法时覆盖默认值,并将 var1
设置为 "foo"
,你需要这样写:
test1("foo")
test2(var1: "foo")
上面调用 test2
的行是语法糖:
test2({:var1 => "foo"})
要更改关键字参数,您必须将散列作为最后一个参数传入,并且散列的键之一必须是作为 Ruby 符号的关键字参数的名称。关键字参数的好处之一是您永远不必记住需要指定参数的顺序。
关于ruby - 默认值与关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368051/