[英]metaclass & constructors
據我了解,在 Smalltalk 和 Objective-C 中創建類的構造函數很困難。 這是因為構造函數不能是 class 實例的消息,因為 class Class 尚未定義。
據我所知,解決方案是創建一個新的 class,其唯一的實例本身就是一個 class。 但是構造函數在這種情況下是如何工作的呢? 我不明白這個過程。
我說的是Smalltalk。 有兩種類型的東西可以在這里合理地調用構造函數。 一種是初始化 class 的新實例的方法。 另一個是初始化 class 的東西。 他們倆都不難。
例如初始化,約定是在 class 上實現“new”方法為 new ^super new initialize(執行超類的 new 實現,然后將“initialize”消息發送到結果並返回)很多類可能已經繼承了這個實現,所以你只需要編寫一個初始化方法
初始化超級初始化。 foo:= 1. 等等。
初始化一個新的 class,機制類似。 您實現了一個名為“initialize”的 class 方法,它會在 class 加載到新的 Smalltalk 環境(圖像)時自動發送。
解決方案是在 class 上創建一個方法,該方法執行所有必要的實例初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.