我想在运行时在squeak中添加一个类方法。 我知道有一个方法编译,它在Behavior类中定义,但是这个方法将我想要的新方法添加到Instance方法类中。有没有办法将其编译为类方法(因此它将是为类定义的方法,而不是类的实例)。
谢谢,
答案 0 :(得分:2)
由于每个类本身都是一个对象,所以类本身也有一个类。此类是Metaclass
的实例,它继承自Behavior
。因此,您可以在类的类上使用#compile:
,就像在类实例方法上一样。
一个简单的例子:
Number
上的实例方法:
Number compile:
'succ
^ self + 1
'
Number class
上的类方法:
Number class compile:
'one
^ self zero + 1
'