据我了解,很难在Smalltalk和Objective-C中创建类的构造函数。这是因为构造函数不能是类实例的消息,因为类Class尚未定义。
据我所知,解决方案是创建一个新类,其唯一的实例本身就是一个类。但构造函数在这种情况下如何工作?我不明白这个过程。
答案 0 :(得分:4)
我在谈论Smalltalk。有两种类型的东西你可以合理地称之为构造函数。一种是初始化类的新实例的方法。另一个是初始化类的东西。它们都不困难。
例如初始化,惯例是你在类上实现“new”方法 新 ^超级新的初始化 (做超类的new实现,然后将“initialize”消息发送给结果并返回) 很多类可能已经继承了这个实现,所以你只需要编写一个初始化方法
初始化 超级初始化。 foo:= 1。 等
要初始化新类,机制类似。您实现了一个名为“initialize”的类方法,当类被加载到新的Smalltalk环境(图像)时,它将自动发送。
答案 1 :(得分:0)
解决方案是在类上创建一个方法,该方法执行实例的所有必要初始化。