試試這個
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
我想我已經完成了,如果您有任何困惑,請查看答案和評論。 –