【发布时间】:2019-04-22 05:59:11
【问题描述】:
我已经看到了一些在创建方法时传递默认参数的示例,但如果您只想替换第一个和第三个参数,它们似乎都没有解决......这是一个示例
def foo(a = 1, b = 2, c = 3)
puts [a, b, c]
end
foo(1, 2)
#=> [1, 2, 3]
当我尝试分配 a=5 和 c=7 并保持 b 的默认值时,如下所示:
foo(a=5,c=7)
我明白了
=> 5,7,3
但我希望5,2,7
实现此目的的正确方法是什么?
【问题讨论】:
-
foo(a=5, c=7)产生与a=5; c=7; foo(5, 7)相同的结果。 Ruby 显然不知道您打算将5和7分配给被调用方法中的局部变量a和c,并将b分配给它的默认值。她只能假设您已经传递了前两个变量a和b的值,并且c将被赋予其默认值。除了使用命名参数之外,根本没有办法做到这一点。注意,执行方法时变量a、b和c与方法中同名的局部变量无关。
标签: ruby methods arguments default