试试这个
p RUBY_VERSION
p s = ""
p s.nil?
p s.empty?
p s.nil? || s.empty?
p (s.nil? or s.empty?)
输出:
"2.0.0"
""
false
true
true
true
说明:
s.nil?
#=> false
s.nil?.or.empty?
#NoMethodError: undefined method `or' for false:FalseClass
# from (irb):5
# from C:/Ruby200/bin/irb:12:in `<main>'
因为s.nil?
上述错误给false
和false
是FalseClass
的一个实例,并且此类没有or
方法。所以实际的修复如上所示。
编辑:
p RUBY_VERSION
class Object
alias :oldnil :nil?
def nil?
@@x = self
oldnil
end
end
class FalseClass
def or
empty?
end
def empty?
@@x.empty?
end
end
class TrueClass
def or
empty?
end
def empty?
@@x.empty?
end
end
s = ""
p s.nil?
p s.empty?
p s.nil? || s.empty?
p s.nil?.or.empty?
输出:
"2.0.0"
false
true
true
true
我想我已经完成了,如果您有任何困惑,请查看答案和评论。 –