Ruby在方法中传递多个参数

时间:2015-03-10 06:39:09

标签: ruby parameters arguments

其实我试图使用第三个参数作为方法作为get和第二个参数作为* p但是它会抛出错误

def ss(a,*b,method="GET")
    puts a 
end
ss("fff",98,"POST") 

以上代码抛出错误

li.rb:1: syntax error, unexpected '=', expecting ')'
def ss(a,*b,method="GET")
               ^
li.rb:1: syntax error, unexpected ')', expecting end-of-input

如何使这个程序工作?

1 个答案:

答案 0 :(得分:0)

你需要这样做:

def ss(a,method="GET", *b)
 puts a
end

当splat运算符用于接受多个输入时,它应该始终是方法的最后一个参数。此外,方法只能有一个splat参数。

感谢Cary对如何使用splats做出明确而清晰的解释:

  

基本上,规则是如果它是明确的,那就没关系 - Ruby会   想办法。但是,如果添加具有默认值的变量   我的例子def test(*a,b); p a; p b; end; test 1,2,3,它变得模棱两可,所以Ruby会抱怨。