Fixnum/Float を nil にすることはできますか? この場合、self を nil にすることもできます。
class Fixnum
def clamp(min, max)
if self == nil then nil end
...
end
end
nil
独自のクラスがあるため、これは不可能ですNilClass
:
irb(main):001:0> nil.class
=> NilClass
irb(main):002:0> 456.class
=> Fixnum
したがって、変数は aFixnum
または a のいずれかになりますが、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>'
ルビーに聞いてみてください:
nil.is_a? Fixnum
# false
nil.is_a? Float
# false
いいえ。self
等しい可能性がある唯一の方法nil
は、あなたが中にいる場合ですNilClass
。
class NilClass
def self_is_nil?
self == nil
end
end
nil.self_is_nil? # => true
いいえ。オブジェクトは、Fixnum または NilClass のいずれかです。self
常に現在のクラスの型です。