gpt4 book ai didi

ruby-on-rails - Ruby 中参数前的 & 有什么作用?

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

我正在做一些 Ruby Koan 练习。由于我是一个新手,所以有些代码对我来说似乎没有意义。例如参数前面的&

def method_with_explicit_block(&block)
block.call(10)
end

def test_methods_can_take_an_explicit_block_argument
assert_equal 20, method_with_explicit_block { |n| n * 2 }

add_one = lambda { |n| n + 1 }
assert_equal 11, method_with_explicit_block(&add_one)
end

为什么blockadd_one前有&?使它们成为全局变量或将它们引用到前一个变量?

谢谢!

最佳答案

在方法定义中的参数前面,一元前缀和符号& sigil 表示:将传递给此方法的 block 打包为适当的Proc对象。

在方法调用中的参数前面,一元前缀&符号& 运算符表示:将作为参数传递的对象转换为Proc 通过向它发送消息 to_proc(除非它已经是一个 Proc)并将其“展开”到一个 block 中,即将 Proc 视为如果它直接作为 block 传递。

关于ruby-on-rails - Ruby 中参数前的 & 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713333/

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