gpt4 book ai didi

Ruby 知道 'myvar' 是 myvar 中的一个变量 = 0 如果 false

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

我正在学习 Ruby,我喜欢使用 irb 来发现新功能和技巧。今天我在玩变量和方法,因为我想知道哪个优先于另一个。在我尝试这个之前一切看起来都很好:

def test
puts "hello"
end

test = "bye" if false

puts test

我期待它返回 "hello" ,但它没有。所以,我想解析器将“测试”视为变量,而不是方法。我有两个问题:

  1. 我的假设是否正确?
  2. 有什么方法可以知道某物 是变量还是方法?某些方法,例如 test.is_variable?

最佳答案

test = "hello" if false
p test #=> nil

无论如何都会创建局部变量 test(默认值为 nil),并且假设局部变量覆盖了同名方法,这就是您获得的值。就在一小时前someone被主题的微妙变化所吸引。你不认为这只发生在单行条件语句中吗:

if false
test = "hello"
end
p test #=> nil

那是因为 Ruby 在解析变量时定义变量(而不是在执行变量时)。

关于Ruby 知道 'myvar' 是 myvar 中的一个变量 = 0 如果 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839789/

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