【问题标题】:Ruby syntax oddity [duplicate]Ruby语法奇怪[重复]
【发布时间】:2012-07-25 12:21:43
【问题描述】:

可能重复:
conditional statement and assigning value in ruby

在重构一些 Rails 代码时,我在 ruby​​ 中遇到了一些奇怪的语法。

给定以下方法

def get_value
  42
end

为什么会这样?

if value = get_value
  puts value
end

虽然没有?

puts value if value = get_value

后者给出错误:undefined local variable or method `value' for main:Object (NameError)。我以为这些表达是平等的?当 if 块在 puts 之前求值时,value 不应未定义。

【问题讨论】:

标签: ruby


【解决方案1】:

这是由于行的解析与执行时间的关系。在第一个版本中,值被解析和设置,然后对 puts 进行评估。在第二行中,当解析器到达变量puts value 时,它还没有被定义。换句话说,它不能运行行来设置变量,直到它首先解析行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2018-08-08
    • 2013-07-16
    相关资源
    最近更新 更多