[SML 7763] Re: セーブされたファイルが自分でわかるプログラム

濱崎治 osamu.hamasaki @ gmail.com
2010年 2月 1日 (月) 22:27:31 JST


濱崎です。

私も問題を正しく理解しているか自信がないですが、
こんなのでは如何でしょうか?

| aContext aStream |
aContext := thisContext.
[aContext sender selector = #fileIn]
	whileFalse: [aContext := aContext sender].
aStream := aContext sender receiver.
Transcript cr; show: aStream name


2010年1月31日20:07 AOKI Atsushi <atsushi @ cc.kyoto-su.ac.jp>:
> Smalltalkerの皆さんへ
>
> ここに述べるみたいなプログラムを書き下ろせるでしょうか。プロ
> グラムの中で、そのプログラム自身がセーブされているファイル名
> を用いるプログラムです。
>
> たとえば、以下のようなプログラムを書くとします。ただし、この
> プログラムをセーブしたファイル名を、このプログラムの中で使用
> しなければなりません。どこにセーブしてもいいのです。ファイル
> としてどこにセーブされるのかわからないのに、このプログラムの
> 中で当該のファイル名を使わなければならないのです。
>
> | aFilename |
> aFilename := <このプログラムをセーブしたファイル名>.
> Transcript cr; show: aFilename printString
>
> もしも、上記のプログラムを「/usr/aoki/smalltalk/tmp.st」とい
> うファイルにセーブしたとしたら、次のプログラムを実行したり、
>
> '/usr/aoki/smalltalk/tmp.st' asFilename fileIn
>
> ファイルリスト(ファイルブラウザ)などで当該のファイルを選択
> してファイルインしたら、トランスクリプトにそのファイル名が出
> 力されなければなりません。
>
> 何を言っているのかわからないかもしれませんが…、うまく説明で
> きないことを許してください。今度の勉強会@京都で援用しようと
> 思い立ち、それなりに実装したのですが、もっと良策があるやもし
> れないなぁと考え、皆さんに訊ねてみようとポストした次第です。
>
> ------------------------------------------------------------
> AOKI Atsushi          http://www.cc.kyoto-su.ac.jp/~atsushi/
>



-- 

Osamu Hamasaki


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