2015-06-21 43 views

回答

1

這裏發生了兩件不同的事情。

class Trace < self建立一個新的Trace類繼承Promise,這是self在那一點。在另一個文件中,您會將此視爲class Promise::Trace < Promise,但由於Trace在同一個文件中定義,因此他們使用這種簡寫。

self^Trace.new(*args)呼籲self方法^Trace作爲參數,就像如果你打電話給2^3的XOR。 ^在行160上定義。

0

class Trace < self定義了類Trace,它是self的子類。在您的具體情況下,並且由於此定義位於Promise類別內,因此self指的是Promise,因此Trace被定義爲Promise的子類別。

304行不涉及任何種類的魔術,^被定義爲160行的方法。