在运行时在吱吱声中编译类方法

时间:2013-05-07 10:25:49

标签: runtime squeak class-method

我想在运行时在squeak中添加一个类方法。 我知道有一个方法编译,它在Behavior类中定义,但是这个方法将我想要的新方法添加到Instance方法类中。有没有办法将其编译为类方法(因此它将是为类定义的方法,而不是类的实例)。

谢谢,

1 个答案:

答案 0 :(得分:2)

由于每个类本身都是一个对象,所以类本身也有一个类。此类是Metaclass的实例,它继承自Behavior。因此,您可以在类的类上使用#compile:,就像在类实例方法上一样。

一个简单的例子:

Number上的实例方法:

Number compile: 
'succ
   ^ self + 1
'

Number class上的类方法:

Number class compile:
'one
    ^ self zero + 1
'