gpt4 book ai didi

ruby-on-rails - & 在 ruby​​ 中是一个函数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:52 27 4
gpt4 key购买 nike

过程示例

 p = Proc.new { |x| puts x*2 }
[1,2,3].each(&p)

'&' 告诉 ruby​​ 把过程变成一个 block

我有上面的例子,想知道 & 是否是一个以 proc 作为参数的函数?

这里还有 rails 中 form_for 的签名。

form_for(record, options = {}, &block)

&block 是将 block 变成 proc 还是相反?

最佳答案

I have the above example and wonder if & is a function taking a proc as an argument?

它不是函数(Ruby 没有函数)。它是一个运算符(operator)。它仅在参数列表中有效,并将 Proc 对象“展开”到 block 中,就好像它已作为文字 block 传递一样。如果该对象还不是 Proc,它将尝试通过向它发送消息 to_proc 将其转换为一个。

is &block a block turned into proc or the other way around?

在这种情况下,& 是一个仅在参数列表中有效的印记(类似于 * 表示剩余参数的方式)。它“包装”了一个传递给 Proc 对象中的消息发送的文字 block ,并将其绑定(bind)到参数,以便它可以在方法/ block 主体中按名称使用。通常, block 是匿名的,只能隐式地yield

关于ruby-on-rails - & 在 ruby​​ 中是一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28333955/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com