[Squeak-ja: 2494] Re: SqueakToys の変数

suto suto @ amcac.ac.jp
2005年 7月 1日 (金) 22:00:23 JST


阿部さん:

秋田公立美術工芸短期大学の須藤です。
レス、ありがとうございます。

>> (1)
>> 関数に「引数」を設定したとき、その引数を表すタイルを条件分岐のタイル(テスト)の
>> 条件部分に入れようとしても入ってくれないのですが、
>> 引数を見て処理を条件分岐させることはできないのでしょうか?
>
> テストに入れられるフレーズ(たとえば[楕円の][x座標]など)をダミーで入れてお
> き、引数付スクリプタの引数部分をクリックして取り出せる引数のタイル([数値]
> など)を古いテストの上にドラッグして置き換えれば大丈夫です。
>

無事、タイルを入れることができました。

>> (2)
>> また、関数を再帰的に呼び出すとき、
>> 「現在の引数に1を足した数を引数として再帰呼び出し」のようなことをやりたいのですが、
>> 「引数に1を足す」方法が分かりません。可能でしょうか?
>
> 引数の定数([5]など)の右にある緑の三角をクリックして式を伸ばし、先程と同じ
> ように定数を引数タイルで置き換えてやればいけます。
>

こちらもうまくゆきました。



>> (3)
>> 上記の解決策として、「変数」を新たに作成して「引数」を代入し、
>> 条件分岐などはこの変数を参照することで処理しています。
>> しかし、ここで作成された変数はいわゆるグローバル変数(インスタンス変数?)のようで、
>> 再帰呼び出しを行うと期待した結果を得ることができません。
>> (現在は再帰から返ってきたところで引数を再代入することで回避)
>> いわゆるローカル変数を使うにはどうすればいいのでしょうか?
>
> 入れ物などをつかって、スタックを自分で作って管理するという荒業があります
> が、それ自体が目的でない限りお勧めしません。その部分だけSmalltalkで書くこ
> とも出来ます。プロジェクト置き場には、ドラゴン曲線など、まだ引数がなかっ
> た時代の力作があります。
>

さすがに自作スタックを作るほどのものでもないので、こちらは試してみませんでした。
再帰をつかってコッホ曲線をつくるプロジェクトを作ってみたので
私も公開してみたいと思います。
これで、専攻科生にフラクタルの基礎を教えることができます。
(どこまで理解してもらえるかは謎ですが・・・)
どうもありがとうございました。

---
須藤秀紹(すとうひでつぐ)
秋田公立美術工芸短期大学 産業デザイン学科
〒010-1632 秋田市新屋大川町12-3
TEL 018-888-8108 / FAX 018-888-8109
http://www.amcac.ac.jp/~suto




Squeak-ja メーリングリストの案内