我知道我可以使用splat运算符传递多个参数并在方法中访问它们。
def meth(arg*)
print arg
end
meth(1,2,'string') #=> [1,2,"string"]
但是,当创建一个仅使用splat
运算符作为参数的方法时,Ruby不会抱怨。例如,此方法定义不会抛出任何错误,因此我认为它是有效的。但是如何访问传递的参数?
def meth(*)
#how do I access the parameters passed here.
# puts * is obviously invalid
end
答案 0 :(得分:2)
答案 1 :(得分:2)
此*
用于接受不使用的可变数量的参数。 _
用于接受未使用的单个参数,但存在差异。虽然_
可以引用_
收到的第一个参数,但*
收到的参数不能被引用。
def foo _, x, _; puts _ end
foo(1, 2, 3) # => 1
def foo *; puts * end # => syntax error
因此,虽然使用初始_
是接收不使用的参数的约定,但使用辅助_
或*
可防止接收到的参数使用
答案 2 :(得分:0)
作为我在上述评论中推测的一个例子:
def abc( a, b, * )
puts a
puts b
end
# => nil
abc( 1,2,3,4,5,6 )
1
2
# => nil