2015-06-21 37 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行的方法。