ruby 空值表达式

ruby void value expression

为什么我会收到空​​值表达式错误?

代码

[return 1]

来自 rib 的错误:

SyntaxError ((irb):3: void value expression)

同样的情况:

def a
[
  return 1 if true
  2
]
end

为了构造数组,Ruby 必须首先计算数组的内容。但是,两个数组的内容都是一个 return 表达式,它结束了方法的计算。换句话说,数组永远不会被构造出来,它是完全没有用的。

Ruby 在语法上检测到这种情况,并使其成为错误而不是执行无用的代码。

在Ruby中,万物皆表达式,即万物皆有值。然而,对于 return,这让我们有点棘手:return 表达式的值应该是多少?实际上,它没有任何意义,因为一旦 return 被评估,当前上下文就会退出。

因此,return 的值被假定为 void 值 ,并且每当您使用 void 值 在表达式上下文中,即您希望进一步使用该值的地方,这是一个错误。

您正在尝试 return 解析器无法确定的值。这是因为 return 在数组定义中。

更好的可能是...

return [1]

def a
  [(my_boolean_method ? 1 : 2)]
end