ruby – “定义”和“除非”不能按预期工作

前端之家收集整理的这篇文章主要介绍了ruby – “定义”和“除非”不能按预期工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我期待着以下片段:
var = "Not Empty" unless defined? var
var # => nil

返回“不空”,但是我没有.任何洞察为什么会发生这种情况?

解决方法

这是Ruby中唯一称之为实际WTF的时刻之一.

你必须使用

unless defined? var
  var = :value
end

使用后缀语法,解释器将在内部使用该值,因此可以对变量进行推理,从而在检查完成之前定义它:

# Doesn't print anything
unless defined?(foo) and (p(foo) or true)
  foo = :value
end

# Prints nil
bar = :value unless defined?(bar) and (p(bar) or true)

猜你在找的Ruby相关文章