[SML 7548] Re: 第7回Smalltalk勉強会@京都

toshihiko ichida dogatana @ gaia.eonet.ne.jp
2009年 5月 16日 (土) 10:11:07 JST


いちだです。

AOKI Atsushi さんは書きました:

> 今日は、私的変数・共有変数・特殊変数と進んで、メッセージに入
> ることができました。ところがですね、喧喧諤諤の状態、諸子百家
> の光景を呈し、かなり疲れましたぁ〜。

いつも楽しく参加させてもらっています。

> 最内スコープ束縛方式を暗黙とした Smalltalk プログラミングに
> おいて、次の術語を明解にしておく必要があるのだろうと思います。

勉強会で XML.Text と Core.Text の2つのTexクラスという「名前」
の解決について質問させていただきました。

そのときにも最内スコープであるとの回答をいただいたと思うので
す、クラス名については、どうもスコープの階層が無いように感じ
ておりまだモヤモヤ感が残ってます。

例えば Jun3Dimage というクラスの定義の冒頭には

Smalltalk.Jun defineClass: #Jun3dImage
	superclass: #{Jun.JunAbstractObject}

とあり、名前空間としては Smalltalk.Jun に所属していますが、
インスタンスを作成するときには
  aImage := Smalltalk.Jun.3dImage new
としなくても
  aImage := 3dImage new
とするだけでも 3dImage という名前のクラスのインスタンスを生
成できます。SmalltalkはデフォルトとしてもJunが省略できてし
まうのは何故だろうという疑問です。

これから、同一クラス名となったときの曖昧さを解消するために、
名前空間で擬似的に階層を扱えるが、作成したクラスは全て同じス
コープにあるという理解をしたのですが、正しいでしょうか?

あるいはスコープ階層は、クラス内でクラスを定義したときに出
てくるものなのだろうかと想像したりします。
(Smalltalkでできるのかどうか知らないのですが)

--
いちだ



SML メーリングリストの案内