gpt4 book ai didi

ruby-on-rails - block 前参数的括号

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:29 25 4
gpt4 key购买 nike

我注意到我需要在传递给 block 之前的 Ruby 方法的参数周围加上括号。这是什么原因?归结为最小的例子来说明我的意思:

def test a
yield 100
end

test 50 { |x| x*x + 2 } # Gives an error in irb!

test(50) { |x| x*x + 2 } # Gives no error!

我不明白为什么 Ruby 会提示第一种情况。错误如下:

SyntaxError: compile error
(irb):18: syntax error, unexpected '{', expecting $end

最佳答案

这是可能出现的歧义的示例:

def foo(val = "default", &block)
# ...
end

哈希和 block 文字都是使用 { ... } 创建的

因此,如果您调用 foo {} - 您是否将空散列传递给 val 参数(block 变为 nil ),或者您是否将空 block 传递给 block 参数(val 变为 "default")?

关于ruby-on-rails - block 前参数的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593078/

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