gpt4 book ai didi

ruby-on-rails - Ruby 变量定义

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

<分区>

我偶然发现了 ruby​​ 中关于变量定义的奇怪行为(并且在途中丢失了一盒 donut ):

irb(main):001:0> if false
irb(main):002:1> a = 1
irb(main):003:1> end
=> nil
irb(main):005:0> a.nil?
=> true
irb(main):006:0> b.nil?
NameError: undefined local variable or method `b' for main:Object
from (irb):6
from /Users/jlh/.rbenv/versions/2.1.5/bin/irb:11:in `<main>'

为什么不是 a.nil? 抛出 undefined local variable?例如,看一下 python(只是想将它与解释性语言进行比较):

>>> if False:
... a = 1
...
>>> print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

在编译语言中,这甚至无法编译。

  • 这是否意味着 ruby​​ 保留对该变量的引用,即使它没有经过那段代码?
  • 如果是这样,变量定义考虑的 ifs/else 有多深?

我真的不敢相信这是 ruby​​ 中的预期行为。而且它不是特定于 irb 的,在 ruby​​/rails 代码块中运行它会得到相同的结果。

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