2016-11-17 90 views
1
def a(b: 88, c: 97) 
     puts b 
     puts c 
    end 

上面的代码有效。但是,Ruby参数带可变参数的SyntaxError

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

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

+0

什么是你的代码应该做的,即什么是方法中'C'的预期值被称为具有不同的价值观是什么时候? – Stefan

回答

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?