3
什麼是在下面的代碼從對象創建對象?還是我迷惑
A = Class.new
class << A
def speak
puts "Dave"
end
end
A.speak
B = A.new
發生的這怎麼可能什麼是真正發生的事情。什麼是'班'班。當你正在定義一個空類,並給它取名爲A
class A
end
:
什麼是在下面的代碼從對象創建對象?還是我迷惑
A = Class.new
class << A
def speak
puts "Dave"
end
end
A.speak
B = A.new
發生的這怎麼可能什麼是真正發生的事情。什麼是'班'班。當你正在定義一個空類,並給它取名爲A
class A
end
:
A = Class.new
這是類似的。 (注:在Ruby中的約定是,開始以大寫字母標識符是常數。)
class << A
def speak
puts "Dave"
end
end
是類似於:
class A
def A.speak
puts "Dave"
end
end
在這裏,你是在A
定義一個類的方法(而不是一個實例方法)。
線:
A.speak
被簡單地調用類方法。
最後:
B = A.new
創造A
類的實例,並將其分配給恆B
。
要回答你的其他問題。 Class
是... Class
!你可以在irb
中看到:
irb(main):022:0> Class.class
=> Class
那麼什麼是A?一個對象還是一個類? – pankajdoharey
在Ruby類中也是對象。所以它都是。 – jergason
Jergason是正確的。 'A'是一個類,你也可以說它是一個對象,它的類是'Class',或者它是'Class'類的一個實例。它不是類「A」的一個實例,但是「B」是類「A」的一個實例。此外,'B'本身不是一個階級,而是一個對象。 –