块参数列表中的星号

发布于 2024-09-19 16:05:36 字数 245 浏览 4 评论 0原文

在 Ruby 中,我有类似于以下的代码

foo { |x, y| puts y }

因为编译器/解释器不断警告我有关未使用的 var X,所以我将 x 替换为“*”,编译器停止抱怨。 (我不知道为什么我认为 * 是最好的选择......它就这样发生了......)

foo { |*, y| puts y }

这到底是做什么的?有副作用吗?

In Ruby, I have code similar to the following

foo { |x, y| puts y }

Because the compiler/interpreter keeps warning me about the unused var X, I replaced x with a '*' and the compiler stopped complaining. (I don't know why I decided * was the best choice... It just happened...)

foo { |*, y| puts y }

What does this do exactly? And are there any side effects?

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

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

发布评论

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

评论(1

孤云独去闲 2024-09-26 16:05:36

在这种情况下,星号称为“splat”运算符。这意味着您可以在其位置传递多个参数,并且块会将它们视为数组。

不过,我不确定它如何或为什么在后面没有变量名的情况下工作(例如 foo { |*x, y| put y })。我猜这意味着该块忽略除最后一个参数之外的所有参数,它打印出来。

The asterisk in this context is called the "splat" operator. This means you can pass multiple parameters in its place and the block will see them as an array.

I'm not sure how or why it works without a variable name after it, though (e.g. foo { |*x, y| puts y }). I would guess that it means the block ignores all parameters except for the last one, which it prints out.

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