簡體   English   中英

元類和構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM