Ruby参数SyntaxError with varargs

时间:2016-11-17 10:34:43

标签: ruby

    def a(b: 88, c: 97)
      puts b
      puts c
    end

以上代码有效。但是,

def a(b: 88, c: 97, *c)
  puts b
  puts c
end

引发语法错误。任何人都可以向我指出解释它的正确文档吗?

1 个答案:

答案 0 :(得分:5)

位置参数在方法签名中排在第一位。命名参数最后。

这样可以更好地工作,但您仍然有一个重复的参数名称,这是不允许的。

def a(*c, b: 88, c: 97)
  puts b
  puts c
end
# ~> -:1: duplicated argument name
# ~> def a(*c, b: 88, c: 97)
# ~>                    ^

有更多信息的精彩答案:Mixing keyword with regular arguments in Ruby?