在the source,只見class Trace < self
(線323) 內類和這些類被稱爲像self^Trace.new(*args)
(線304)。className類<自類,和自^ Classname.new
請解釋這些機制及其使用案例。在哪裏可以在代碼中使用這樣的結構,以及爲了什麼?
在the source,只見class Trace < self
(線323) 內類和這些類被稱爲像self^Trace.new(*args)
(線304)。className類<自類,和自^ Classname.new
請解釋這些機制及其使用案例。在哪裏可以在代碼中使用這樣的結構,以及爲了什麼?
這裏發生了兩件不同的事情。
class Trace < self
建立一個新的Trace
類繼承Promise
,這是self
在那一點。在另一個文件中,您會將此視爲class Promise::Trace < Promise
,但由於Trace
在同一個文件中定義,因此他們使用這種簡寫。
self^Trace.new(*args)
呼籲self
方法^
新Trace
作爲參數,就像如果你打電話給2^3
的XOR。 ^
在行160上定義。
class Trace < self
定義了類Trace
,它是self
的子類。在您的具體情況下,並且由於此定義位於Promise
類別內,因此self
指的是Promise
,因此Trace
被定義爲Promise
的子類別。
304行不涉及任何種類的魔術,^
被定義爲160行的方法。