Ruby 中的 *(星号)是啥意思? [复制]
Posted
技术标签:
【中文标题】Ruby 中的 *(星号)是啥意思? [复制]【英文标题】:What does the * (star) mean in Ruby? [duplicate]Ruby 中的 *(星号)是什么意思? [复制] 【发布时间】:2011-05-09 08:59:57 【问题描述】:可能重复:What is the * operator doing to this string in Ruby
可能在其他地方有答案,但我只是不知道如何找到它......
如果我是对的,*
表示如果在函数定义中使用多个参数:
def hero(name, *super_powers)
但是*
在这样的代码中做了什么:
Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => :first_name=>"Shane", :last_name=>"Harvie"
【问题讨论】:
可能重复:***.com/questions/918449/… 【参考方案1】:可变长度参数列表,星号运算符
方法的最后一个参数前面可能有一个星号 (*),有时称为“splat”运算符。这表明可以将更多参数传递给函数。收集这些参数并创建一个数组。
星号运算符也可以在方法调用中的数组参数之前。在这种情况下,数组将被展开,传入的值就像用逗号分隔一样。
【讨论】:
也称为可变参数函数 不是一个完整的解释。它被称为 splat 运算符theplana.wordpress.com/2007/03/03/… 看起来当它后跟一个 &block 时,它不一定是方法的最后一个参数。我在 rails route mapping 的资源功能中遇到了这个问题。我是 ruby 新手,也许这更多是因为 &block 参数是一种特殊情况。以上是关于Ruby 中的 *(星号)是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章