Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在单行条件中指定未定义的变量_Ruby - Fatal编程技术网

Ruby 在单行条件中指定未定义的变量

Ruby 在单行条件中指定未定义的变量,ruby,Ruby,在Ruby中,为什么可以编写: # b is not defined yet. # if b = true a = b end # => a = true 但不是一行: a = b if b = true # => NameError: undefined local variable or method `b' for main:Object 因为Ruby解释器在看到赋值时会创建一个局部变量 在第二种情况下,它还没有看到赋值,因此解析表达式时变量不存在 更准确地说,首先将方

在Ruby中,为什么可以编写:

# b is not defined yet.
#
if b = true
  a = b
end
# => a = true
但不是一行:

a = b if b = true
# => NameError: undefined local variable or method `b' for main:Object

因为Ruby解释器在看到赋值时会创建一个局部变量

在第二种情况下,它还没有看到赋值,因此解析表达式时变量不存在

更准确地说,首先将方法解析为内部表示,然后,可能最终将调用并实际执行代码


在该解析过程中创建变量。这实际上更多的是一个声明的问题,它只是意味着口译员意识到了它们。除非有人调用周围的方法,否则不会在给定空间或值的意义上创建它们。

因为Ruby解释器在看到赋值时会创建一个局部变量

在第二种情况下,它还没有看到赋值,因此解析表达式时变量不存在

更准确地说,首先将方法解析为内部表示,然后,可能最终将调用并实际执行代码

在该解析过程中创建变量。这实际上更多的是一个声明的问题,它只是意味着口译员意识到了它们。在有人调用周围的方法之前,不会在给定空间或值的意义上创建它们