爲什麼singleton
方法不能在Fixnum
,Bignum
,Float
,Symbol
類對象,但FalseClass
和TrueClass
都可以定義?爲什麼不能在`Fixnum`,`Bignum`,`Float`,`Symbol`類對象中定義`singleton`方法,但是`FalseClass`和`TrueClass`可以有?
C:\>ruby -v
ruby 2.0.0p0 (2013-02-24) [i386-mingw32]
C:\>irb --simple-prompt
DL is deprecated, please use Fiddle
11111111111.class
#=> Bignum
class << 11111111111 ; end
#TypeError: can't define singleton
# from (irb):2
# from C:/Ruby200/bin/irb:12:in `<main>'
1111.class
#=> Fixnum
class << 1111 ; end
#TypeError: can't define singleton
# from (irb):4
# from C:/Ruby200/bin/irb:12:in `<main>'
11.11.class
#=> Float
class << 11.11 ; end
#TypeError: can't define singleton
# from (irb):6
# from C:/Ruby200/bin/irb:12:in `<main>'
:name.class
#=> Symbol
class << :name ; end
#TypeError: can't define singleton
# from (irb):8
# from C:/Ruby200/bin/irb:12:in `<main>'
難道你不是指「實例對象」,而不是「類對象」?順便說一句,'NilClass'的實例對象也允許單例對象。 – 2013-03-17 22:19:50