[SML 7555] Re: 第7回Smalltalk勉強会@京都
Masashi Umezawa
umejava @ mars.dti.ne.jp
2009年 5月 17日 (日) 12:18:52 JST
こんにちは
梅澤です。
下記のSmalltalkの名前空間に自分のライブラリの名前空間をインポート
させてしまう方法ですが、私もSIXXというXMLシリアライザのライブラリ
で使っています。
http://www.mars.dti.ne.jp/~umejava/smalltalk/sixx/index.html
SIXXはObjectなどの既存のクラスにシリアライズ用メソッドを追加して
いるのですが、VW版のみSixx.SixxSettingsなどと名前空間の記述が
ソース中にでてしまうと、他の名前空間をサポートしていないSmalltalk
へのポータビリティがなくなってしまいます。
そんなわけで、割と実用的な方法ではないかと私は思っています。
Smalltalkの名前空間内で衝突が無いように、クラスには全てSixxという
接頭辞をつけるところが冗長ではあります。また他のSmalltalkでも
名前空間をサポートすべきであり、かつその表記が統一化されるべき
という話もありますね。(VWでは.Smalltalk/Xでは::が名前空間の
区切りになっています)
(snip)
> そして、次に示すように、Smalltalkという名前空間へ一気に移入
> を行います。
>
> Smalltalk addImport: (GeneralNameSpaceImport path: #('Jun' '*'))
>
> これにより「じゅん for Smalltalk」はレガシィプログラムコード
> の仲間入りを果たします。次のメッセージ式の応答の末尾をご覧く
> ださい。
>
> Smalltalk importString
> ==> '
> Core.*
> Kernel.*
> OS.*
> External.*
> Graphics.*
> UI.*
> Tools.*
> CraftedSmalltalk.*
> XProgramming.SUnit.*
> Database.*
> Lens.*
> Jun.*
> '
>
> 上述したGeneralNameSpaceImportはBindingReferenceのサブクラス
> でして、クラス名でクラスを動的束縛する仕掛けの一種でもあるの
> です。
>
> Object
> | GeneralBindingReference
> | | BindingReference ←こいつの
> | | | ChangeSupportClassProxy
> | | | NameSpaceImport
> | | | | GeneralNameSpaceImport ←ここ
> | | | | SpecificNameSpaceImport
> | | | QualifiedName
> | | LiteralBindingReference
> | | StrictBindingReference
>
> 以上になります。明解となりましたでしょうか?市田さん。ある意
> 味で最内スコープ束縛方式をやぶる禁じ手ですので、通常はやって
> はいけませんよ。:-)
>
> ------------------------------------------------------------
> AOKI Atsushi http://www.cc.kyoto-su.ac.jp/~atsushi/
---
[:masashi | ^umezawa]
SML メーリングリストの案内