处理3个或更多默认参数Ruby

时间:2018-11-19 20:18:13

标签: ruby methods arguments default

我已经看到了一些在创建方法时传递默认参数的示例,但是如果您只想替换第一个和第三个参数,它们似乎都无法解决...这是一个示例

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

什么是实现此目的的正确方法?

2 个答案:

答案 0 :(得分:4)

使用关键字参数吗?

def foo(a: 1, b: 2, c: 3)
  puts [a, b, c]
end

foo(a: 5, c: 7) 

答案 1 :(得分:0)

  

我已经看到了一些在创建方法时传递默认参数的示例,但是如果您只想替换第一个和第三个参数,它们似乎都无法解决...

那是因为不可能。

默认参数从左到右绑定。我在回答这些问题时写了更多关于参数如何绑定到参数的信息: