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 中的 *(星号)是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

scanf 格式说明符中的星号是啥意思? [复制]

星号 * 在 Python 中是啥意思? [复制]

“[*]”(星号修饰符)在 C 中是啥意思? [复制]

XAML ColumnDefinition 中的 *(星号)是啥意思?

`reveal_type` 输出中的星号是啥意思?

Android Studio 的版本控制“日志”窗口中的 Author_name*(带星号)是啥意思?