其实我试图使用第三个参数作为方法作为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
如何使这个程序工作?
答案 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会抱怨。