Fixnum / Float可以为零吗?就像在这种情况下自己甚至可以是零一样:
class Fixnum
def clamp(min, max)
if self == nil then nil end
...
end
end
答案 0 :(得分:4)
这是不可能的,因为nil
有自己的类NilClass
:
irb(main):001:0> nil.class
=> NilClass
irb(main):002:0> 456.class
=> Fixnum
因此,变量可以是Fixnum
或NilClass
,但不能同时为。{/ p>
在类实例方法的上下文中,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>'
答案 1 :(得分:2)
请问Ruby:
nil.is_a? Fixnum
# false
nil.is_a? Float
# false
答案 2 :(得分:0)
没有。对象是Fixnum或NilClass的一种。 self
始终是当前类的一种类型。
答案 3 :(得分:0)
不。如果您在self
内,则nil
可能等于NilClass
的唯一方式。
class NilClass
def self_is_nil?
self == nil
end
end
nil.self_is_nil? # => true