ruby:“p * 1..10”中的星号是什么意思

线

p *1..10 

完全一样的事情

 (1..10).each { |x| puts x } 

这给你以下输出:

 $ ruby -e "p *1..10" 1 2 3 4 5 6 7 8 9 10 

例如,与textmate合作时,这是一个很好的捷径,但是星号是干什么的? 这是如何运作的? 网上找不到任何东西…

这是摔跤运营商 。 您经常会看到它用于将数组拆分成函数的参数。

 def my_function(param1, param2, param3) param1 + param2 + param3 end my_values = [2, 3, 5] my_function(*my_values) # returns 10 

更常见的是用来接受任意数量的参数

 def my_other_function(to_add, *other_args) other_args.map { |arg| arg + to_add } end my_other_function(1, 6, 7, 8) # returns [7, 8, 9] 

它也可以用于多个任务(尽pipe这两个语句都可以在没有图示的情况下工作):

 first, second, third = *my_values *my_new_array = 7, 11, 13 

举个例子,这两个是等价的:

 p *1..10 p 1, 2, 3, 4, 5, 6, 7, 8, 9, 10