【发布时间】:2017-02-10 11:13:58
【问题描述】:
我刚刚遇到了这个例子,其中 splat 运算符在方法定义中单独使用:
def print_pair(a,b,*)
puts "#{a} and #{b}"
end
print_pair(1,2,3,:cake,7)
#=> 1 and 2
很清楚你会在这样的上下文中使用什么以及为什么要使用它:
def arguments_and_opts(*args, opts)
puts "arguments: #{args} options: #{opts}"
end
arguments_and_opts(1,2,3, a: 5)
#=> arguments: [1, 2, 3] options: {:a=>5}
但是在第一个示例中您为什么以及如何使用它?既然它是在 Ruby 规范中定义的,那么它必须有一个用例吗?
【问题讨论】:
-
你在哪里找到这样的代码?
-
@AndreyDeineko 来自这篇文章monkeyandcrow.com/blog/the_strange_ruby_splat,但我在浏览一些rubygems源代码时也发现了这样的定义。