[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 メーリングリストの案内