Ruby 中的 *(星号)是什么意思?

发布于 2024-10-01 16:46:58 字数 649 浏览 8 评论 0原文

可能的重复:
Ruby 中 * 运算符对该字符串执行什么操作< /a>

可能在其他地方有答案,但我只是不知道如何找到它......

如果我是对的,如果在函数定义中使用 * 意味着多个参数:

def hero(name, *super_powers)

但是什么* 在代码中执行如下操作:

Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}

Possible Duplicate:
What is the * operator doing to this string in Ruby

Probably there is answer for that elsewhere, but I just don't know how to find it...

If I am right, the * means multiple parameters if used in function definition:

def hero(name, *super_powers)

But what does * do in the code like this:

Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜无邪 2024-10-08 16:46:59

可变长度参数列表,星号运算符

方法的最后一个参数前面可能带有星号 (*),有时称为“splat”运算符。这表明可以向函数传递更多参数。收集这些参数并创建一个数组。

在方法调用中,星号运算符也可以位于数组参数之前。在这种情况下,数组将被扩展,并且值将被传入,就好像它们是用逗号分隔的一样。

Variable Length Argument List, Asterisk Operator

The last parameter of a method may be preceded by an asterisk(*), which is sometimes called the 'splat' operator. This indicates that more parameters may be passed to the function. Those parameters are collected up and an array is created.

The asterisk operator may also precede an Array argument in a method call. In this case the Array will be expanded and the values passed in as if they were separated by commas.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文