最近見たのに見つからなくなった…
オブジェクトのクラスを別のものに設定するにはどうすればよいですか?
--更新: さて、Pharo で! お気に入り:
d:=Object new. d setClass: Dictionary.
実際にはsetClassではないということだけです。オブジェクトのクラス ポインタを変更するにはどうすればよいですか?
最近見たのに見つからなくなった…
オブジェクトのクラスを別のものに設定するにはどうすればよいですか?
--更新: さて、Pharo で! お気に入り:
d:=Object new. d setClass: Dictionary.
実際にはsetClassではないということだけです。オブジェクトのクラス ポインタを変更するにはどうすればよいですか?
Class ClassBuilder を見てください。クラスを変更すると、新しいクラスが作成され、前者のインスタンスが後者のインスタンスに切り替えられます。したがって、あなたが求めていることを行う何らかの方法を提供する必要があります。
わかりました、次に次のように試すことができます:
d := Object new.
e := Dictionary new.
d become: e.
ただし、#become: は慎重に試してください。多くの場合、イメージが壊れてしまうためです。
メソッド #setClass: は、いくつかの特定のコンテキストで、さまざまな実装で使用されます (メソッド ファインダーで確認してください)。
オブジェクトには、現在のオブジェクトを別の種類 (#asOrderedCollection など) に変換するためのヘルパーがいくつかあります。これは、最後の操作が許可されているためです。
asOrderedCollection
"Answer an OrderedCollection with the receiver as its only element."
^ OrderedCollection with: self
HTH。