Fixnum/浮子可以是零吗?在这种情况下,自我甚至可以是零吗?
class Fixnum
def clamp(min, max)
if self == nil then nil end
...
end
end发布于 2014-08-06 20:50:08
这是不可能的,因为nil有自己的类,NilClass
irb(main):001:0> nil.class
=> NilClass
irb(main):002:0> 456.class
=> Fixnum因此,变量可以是Fixnum,也可以是NilClass,但不能两者兼而有之。
在类实例方法的上下文中,self总是引用类的类型的实例。
此外,self也不能更改:
irb(main):006:0> class C
irb(main):007:1> def z
irb(main):008:2> self = nil
irb(main):009:2> end
irb(main):014:1> end
SyntaxError: (irb):8: Can't change the value of self
self = nil
^
from D:/dev/Ruby20/bin/irb:12:in `<main>'发布于 2014-08-06 20:55:30
问问露比:
nil.is_a? Fixnum
# false
nil.is_a? Float
# false发布于 2014-08-06 20:50:19
不是的。对象要么是Fixnum,要么是NilClass。self始终是当前类的一种类型。
https://stackoverflow.com/questions/25169886
复制相似问题