gpt4 book ai didi

ruby - 为什么不能在 if block 中使用在 `if` 条件下初始化的变量?

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

所以通常在 if 条件下初始化一个变量,然后在 if block 中使用该变量。

if a = foo()
puts a
end

然而,当我初始化一个变量并在同一个 if block 中使用它时,那个 var 将不会被视为已初始化。例如:

def good?(item)
puts "item is #{item.inspect}"
true
end

if b = 52 && good?(b)
puts "b is #{b.inspect}"
end

运行上面的代码,结果是

item is nil
b is true

为什么会这样?什么样的关键字与我搜索和研究的 Ruby 行为相关?

最佳答案

&&的优先级高于=,所以

if b = 52 && good?(b)

相当于:

if b = (52 && good?(b))

引用:Operator Precedence .

关于ruby - 为什么不能在 if block 中使用在 `if` 条件下初始化的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32578110/

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