vieweditattachhistoryswikistopchangessearchhelp

ロランとディアナ5

ここからの続き…

わ……細かなところまで行き届かない「付け焼き刃」(^-^;)。
で、無事アクセプトできたのですが、キースとリリを追加しても好意対象に登録されません?
ノーティファイアが開くわけでも無く……。
はてさて? ……でも続きは明日m(_ _)m。--さ茂 - 2002-06-18, 23:47:22

また、file-out して(ファイル名を ningen2.st などと変えて)アップロードしておいていただけますか? チェックしてみます。--sumim - 2002-06-18, 23:58:36

ningen2.st
うーん。またどこか間違ってるのかなぁ(^-^;)。
ではまた明日m(_ _)m。--さ茂

むぅ。コードは問題ないようですね。

ムーンレイス の: '兵士' 瞳の色は: '黒' で: '男'

これを inspect-it して好意対象になにがつながりますか? --sumim - 2002-06-19, 01:17:47

おはようございます。
昨夜はきっと気が動転していたのでしょう(^-^;)。
刺激の与え方を間違っていたようです。今朝気づいて直しましたらちゃんと動作しましたm(_ _)m。
(省いたはずのnewという刺激を重ねて与えてました。
キース _ ムーンレイス new の: 'キース・レジェ' 瞳の色は: '青' で: '男'
そうすると肝心の好意対象にだけnilが入るようです。はてさて?)
ところで、今の状態は好意対象が同性だとアブノーマルという形になっています。恋愛と友好と尊敬(もしくは畏敬)を分けた方が良いのではと思いますが、変数をこれ以上増やすのも何ですよねぇ……。
何か良い考えはございませんか?--さ茂 - 2002-06-19, 06:39:58

>そうすると肝心の好意対象にだけnilが入るようです。はてさて?
これは、今回したことをきちんとご理解いただいているかどうかのよい判断材料になりますので、是非、じっくり考えてみてください。--sumim

>何か良い考えはございませんか?
いくつか考えているのですが、人間関係のデータベース(のオブジェクト)を作ってそれぞれに持たせてはどうかと思っています。もうひとつの解答の答え合わせを終えたら、それに移りましょう。まずは、上の理由をじっくりと考えてみてください。ヒントは「なぜ new を省けるようになったのか?」です。--sumim - 2002-06-19, 10:01:59

newという刺激をまず調べてみました。
new
"Create and initialize a new instance."
^ super new initialize.
↑これですよね?
省けるようになった経緯も振り返ってみましたが、読み直してもちょっと難解でした(^-^;)。<今更
変数(ex.ロラン)を「ムーンレイス(地球人)に追加して」、「ある名前」と「ある色」と「男か女」を登録するわけですが、この時、刺激の中にあらかじめnewという刺激を仕込んである。
良いですよね?
なのに間違って、
変数 登録するサブクラス [余計なnew] の: 'ある名前' 瞳の色は: 'ある色' で: '男か女'
というのをdo-itしました。
本来なら、登録する先によって好意対象を登録するはずが……。nilになってしまいました。
これは……刺激が二重になったために、一旦、刺激|登場人物|で処理された変数(好意対象有り)がさらにnewで更新された(好意対象登録無し)……のでは?
でも刺激の順番からいくと余計なnewが先に処理されるような気がするのですが? はてさて?--さ茂 - 2002-06-19, 18:30:51

「あるオブジェクト 刺激1 刺激2」と書いたとき、どのように何に刺激が与えられるか思い出してみてください。具体的には刺激2は“あるオブジェクト”に与えられるのか?です。--sumim - 2002-06-19, 18:53:47

与えられませんよね?
刺激1が吐き出したオブジェクトに与えられますよね?
ムーンレイス(あるいは地球人)に|登場人物|刺激が与えられて、それに名前が付けられる。その前に余計なnewがある。
余計なnewは……素人目ここでいう刺激1にしか思えないのです。
で、刺激2|登場人物|が加えられれば、おのずと好意対象は登録されるはずだと?
もしかしたら余計なnewが刺激2にあたるのでしょうか? はてさて?--さ茂 - 2002-06-19, 19:56:41

刺激1が new でオッケーです。ムーンレイス new ではき出されるオブジェクトと、ムーンレイスは別物だということは覚えておられますか? ムーンレイス new ではき出されるオブジェクト(あるムーンレイス=ムーンレイスのインスタンス)に対して「の:瞳の色は: で: 」という刺激を与えたときと、ムーンレイスに「の:瞳の色は: で: 」刺激を与えたときでは参照する設計図・仕様書が根本的に違うのです。--sumim - 2002-06-19, 20:27:06

前者ではムーンレイスに登録した「の:瞳の色は: で: 」に従います。後者ではムーンレイス class に登録した「の:瞳の色は: で: 」に従います。--sumim - 2002-06-19, 20:28:59

実際には、ムーンレイスにもムーンレイス class にも「の:瞳の色は: で: 」は登録されておりませんので、そのスーパークラスである人間(ムーンレイスの場合)もしくは人間 class (ムーンレイス class の場合)に登録されている設計・仕様が使われます。--sumim - 2002-06-19, 20:30:30

>ムーンレイス new ではき出されるオブジェクトと、ムーンレイスは別物だということは覚えておられますか?
はい。「a ムーンレイス」ですよね?
>参照する設計図・仕様書が根本的に違うのです。
はい。それぞれ同じ名前の刺激がありましたよね?
『|登場人物|』は人間classに登録された刺激ですよね?
試しにインスタンスにある方の刺激の中身を無効化して、わざとnewをだぶらせてみました。
あら? 全部nilです。
newを外してみたら、あら、好意対象だけ入ってます(^-^;)。
つまり、好意対象以外は、すべてインスタンスの刺激で登録されているということですよね?
newがだぶると……インスタンスの刺激(↑刺激1)『だけ』が働いているということでしょうか?--さ茂 - 2002-06-19, 22:08:28

>『|登場人物|』
これはその場限りの名札を使うための宣言なので、こういう使い方はやめましょう。作法としては「設計図・仕様書 >> #刺激の名前」つまり、「ムーンレイス class >> #の:瞳の色は:で: 」とします。覚えておいてください。--sumim - 2002-06-19, 22:15:17

了解しましたm(_ _)m。<自分が付けた名札なんで愛着があったようです(^-^;)
ちなみに、
>#の:瞳の色は:で:
これをもっと簡単に示すことはできないんですよね?
「刺激の形(書式?)」を一行目で示す必要があるんですよね?--さ茂 - 2002-06-19, 22:21:54

「ムーンレイス new の: '兵士' 瞳の色は: '黒' で: '男'」の流れを追うとこんな感じになります。

まず、ムーンレイスに new という刺激が与えられ“あるムーンレイス”がはき出されます。その状態は、

名前 …… nil
瞳の色 …… nil
好意対象 …… nil
憎悪対象 …… nil
性別  …… nil

続けてその“あるムーンレイス”に「の: '兵士' 瞳の色は: '黒' で: '男'」という刺激が与えられると、

ムーンレイス >> #の:瞳の色は:で: の

の: ある名前 瞳の色は: ある色 で: 男か女
"主に初期状態のある人間に対し基本的な状態を設定する"
名前 _ ある名前.
瞳の色 _ ある色.
性別 _ 男か女


に従って“あるムーンレイス”は内部状態を変化させます。よって、

名前 …… '兵士'
瞳の色 …… '黒'
好意対象 …… nil
憎悪対象 …… nil
性別  …… '男'

となります。これが余計な new を入れてしまったときの状況です。--sumim - 2002-06-19, 22:24:49

あ……。
「ムーンレイス class >> #の:瞳の色は:で: 」=「人間 class >> #の:瞳の色は:で: 」
ですよね?
同じように、「人間 instance >> #の:瞳の色は:で: 」という書き方ですよね?--さ茂 - 2002-06-19, 22:25:31
>>#の:瞳の色は:で:
>これをもっと簡単に示すことはできないんですよね?


これは刺激の名前で一番シンプルにした状態ですからこれより簡単にすることは難しいと思います。--sumim - 2002-06-19, 22:26:38

>「ムーンレイス class >> #の:瞳の色は:で: 」=「人間 class >> #の:瞳の色は:で: 」
あ。失礼しました。そうです。もうひとつは「人間 >> #の:瞳の色は:で: 」です。--sumim - 2002-06-19, 22:28:44

余計なnewは「人間 instance >> #の:瞳の色は:で: 」(?)に先駆けるとして、そこから「人間 class >> #の:瞳の色は:で: 」のif条件式が働かなかったのは、newのお陰で本来の刺激「人間 class >> #の:瞳の色は:で: 」はそもそも与えられなかったということでしょうか?--さ茂 - 2002-06-19, 22:29:49

そうです。「ムーンレイス の: '兵士' 瞳の色は: '黒' で: '男'」としたときは、ムーンレイスにこの刺激が与えられるので、ムーンレイスの設計図・仕様書であるムーンレイス class の、しかし、そこにはないので、そのスーパークラスの「人間 class >> #の:瞳の色は:で:」が働きますが、「ムーンレイス new の: '兵士' 瞳の色は: '黒' で: '男'」としたときは、「ムーンレイス new」ではき出された“あるムーンレイス”に「の:瞳の色は:で:」という刺激が与えられることになるので、「人間 class >> #の:瞳の色は:で:」ではなく「人間 >> #の:瞳の色は:で:」が働くわけです。--sumim - 2002-06-19, 22:35:39

ちょっとややこしいですかね。--sumim - 2002-06-19, 22:41:42

なるほど! ややこしいですがこれは大きなポイントですね?
最初、同じ名前の、似た刺激があるので「人間 >> #の:瞳の色は:で:」を消そうかと思ったこともありました。
刺激の与え方、反応の返り方もよりわかりやすくなった気がします。……あくまで「気」がするだけですが(^-^;)。--さ茂
- 2002-06-19, 22:50:11

くどいようですが、折角書いたので、new がなかったときのことも。

「ムーンレイス の: '兵士' 瞳の色は: '黒' で: '男'」の流れを追うとこんな感じになります。

まず、ムーンレイスに「の: '兵士' 瞳の色は: '黒' で: '男'」という刺激が与えられます。このとき、「ムーンレイス class >> #の:瞳の色は:で:」を探しますが、ありません。そこで、スーパークラスの人間 class で「人間 class >> #の:瞳の色は:で:」を見つけて、

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある人間」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
self = ムーンレイス
ifTrue: [登場人物 が好きなのは: ディアナ]
ifFalse: [登場人物 が好きなのは: キエル].
^ 登場人物


に従います。この流れの中で、まず、

self new

で“あるムーンレイス”が誕生します。その内部状態は、

名前 …… nil
瞳の色 …… nil
好意対象 …… nil
憎悪対象 …… nil
性別  …… nil

です。これに対して、「の: ある名前 瞳の色は: ある色 で: 男か女」という刺激が与えられます。“あるムーンレイス”はその設計図・仕様書であるムーンレイス内で「#の:瞳の色は:で:」を探しますがないのでスーパークラスの人間で探して「人間 >> #の:瞳の色は:で:」を見つけます。

の: ある名前 瞳の色は: ある色 で: 男か女
"主に初期状態のある人間に対し基本的な状態を設定する"
名前 _ ある名前.
瞳の色 _ ある色.
性別 _ 男か女


その結果、

名前 …… '兵士'
瞳の色 …… '黒'
好意対象 …… nil
憎悪対象 …… nil
性別  …… '男'

という内部状態が設定されます。「登場人物 _ 」によってこの“あるムーンレイス”は登場人物という使い捨ての名札と関連付けされます。続けて、

self = ムーンレイス
ifTrue: [登場人物 が好きなのは: ディアナ]
ifFalse: [登場人物 が好きなのは: キエル]


で、

名前 …… '兵士'
瞳の色 …… '黒'
好意対象 …… ムーンレイス の: 'ディアナ・ソレル'
憎悪対象 …… nil
性別  …… '男'

となり最後の「^ 登場人物」で当初の「ムーンレイス の: '兵士' 瞳の色は: '黒' で: '男'」の結果として登場人物が参照しているあるムーンレイスがはき出される、という仕組みです。--sumim - 2002-06-19, 22:53:56

>なるほど! ややこしいですがこれは大きなポイントですね?
“何か”をだんだんつかんできていただけましたでしょうか…。--sumim - 2002-06-19, 23:00:53

大切なのは、「誰がその刺激を受けるのか、受けたのか」「そいつの設計図・仕様書はどこにあるのか」「刺激を与えた結果、どんなヤツがはき出されるのか」…です。--sumim - 2002-06-19, 23:03:13

一段落したところで、解答1をちょっとだけ手直ししましょう。--sumim - 2002-06-19, 23:05:32

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある人間」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
self = ムーンレイス
ifTrue: [登場人物 が好きなのは: (self の: 'ディアナ・ソレル')]
ifFalse: [登場人物 が好きなのは: (self の: 'キエル・ハイム')].
^ 登場人物


むむむ。
>「ムーンレイス class >> #の:瞳の色は:で:」を探しますが、ありません。そこで、スーパークラスの人間 class で「人間 class >> #の:瞳の色は:で:」
及び
>ムーンレイス内で「#の:瞳の色は:で:」を探しますがないのでスーパークラスの人間で探して「人間 >> #の:瞳の色は:で:」
刺激の仕様書の探し方ですが、
まず自分の属する階層に刺激の仕様書を探す。:ムーンレィス→ムーンレイスclass
なければその上(?):人間class
で、無事刺激を受けて現われたあるムーンレイスは、自分の場所の刺激の仕様書を探す。:aムーンレイス→ムーンレイス
無いので上へ、:人間
(ここにも無ければclassまで上がれるか?)
自分の属する場所の下から上へ、が決まりなのですね?--さ茂 - 2002-06-19, 23:10:12

オブジェクトは刺激を受けると、まず、自分の設計図・仕様書(クラス)にその刺激への応答の仕方が書いていないか探します。

刺激を受けたのが a ムーンレイス なら ムーンレイス
刺激を受けたのが ムーンレイス なら ムーンレイス class

そこになければ、スーパークラスを探します。

刺激を受けたのが a ムーンレイス なら ムーンレイス なければ 人間
刺激を受けたのが ムーンレイス なら ムーンレイス class なければ 人間 class

クラスとインスタンスは「設計図・仕様書」と「それに従って創られた物」の関係、スーパークラスとサブクラスは「設計図・仕様書」同士の関係です。--sumim - 2002-06-19, 23:18:43

>無いので上へ、:人間
>(ここにも無ければclassまで上がれるか?)

惜しい。人間になければ、そのスーパークラスである Object に探しにいきます。--sumim - 2002-06-19, 23:25:49

やはり「海」は想像しにくいので、どうしても積み上げたくなります(^-^;)。今夜はこのへんでm(_ _)m。--さ茂 - 2002-06-19, 23:32:19

解答その2は、この刺激の仕様書の探し方にヒントがあります。--sumim - 2002-06-19, 23:41:25

私もワインが回ってきたのでこれにて…(^_^;)。--sumim - 2002-06-19, 23:41:54

すみません。
(ワールドカップ疲れということじゃないんですが(^-^;))ダウンしてしまいました。尿に蛋白がちょっと出て血液検査の結果待ちです(T-T)。ちょっと休みますm(_ _)m。--さ茂 - 2002-06-20, 20:18:03

それは。大変ですね。ご養生ください。お大事に、どうぞ。--sumim - 2002-06-20, 20:21:10

検査結果は大丈夫でした。あぁよかった。
精神的な疲労でしょうとのこと(^-^;)。漢方の滋養強壮剤を処方してもらいました。
もう少しだけインターネットは休養いたしますm(_ _)m。
ところで解答その2ですが、刺激の仕様書の探し方にヒントあり、とのことですがどうもわかりません。
人間classに、人間・ムーンレイスの初期値を最初に設定しておくという手はないのでしょうか? それくらいしか考えつきませんでした。
ではもうしばらくレスが鈍くなりますがよしなにm(_ _)m。--さ茂 - 2002-06-22, 11:19:40

検査結果、よかったですね。なによりご自愛、専一に。

>刺激の仕様書の探し方にヒントあり、とのことですがどうもわかりません。
今は、ムーンレイス class に刺激「の:瞳の色は:で:」の定義がないので、人間 class に探しに行っています。なんか同じようなヒントですが…(^_^;)。--sumim - 2002-06-22, 11:55:49

ある仕組みを知らないと「それじゃ、人間を定義した意味がないじゃん…」という方法になります。--sumim - 2002-06-22, 11:57:05

職場復帰しました(^-^;)。まだだるいんですが。
ヒントください。
例えばaムーンレイスとa人間の初期値をそれぞれムーンレイスと人間に設定する、という手法でもないのでしょうか?
「人間 class >> #の:瞳の色は:で:」で一括登録できるものをあえてこうするのも無駄のような気がしますが、解答2がある以上抜本的に考え方を変えるべきなのかなぁと。
「人間 class >> #の:瞳の色は:で:」の代わりにという感じです。
追伸:リハビリ中(?)につきレスポンスはまだ悪いままですm(_ _)m。<ネット自粛令は解禁されてません(^-^;) --さ茂 - 2002-06-24, 17:59:38

>例えばaムーンレイスとa人間の初期値をそれぞれムーンレイスと人間に設定する、という手法でもないのでしょうか?
たぶん、人間→地球人の間違いだと思うのですが、そうなら正解です。ただ、それだとせっかく人間を定義して「人間 class >> #の:瞳の色は:で:」のように a 地球人と a ムーンレイスで共通のものを定義できるようにしたのに…となるはずで、実際にそういう風に言及しておられますからたぶん合っているかと(^_^;)。そこで「ある仕組み」が活きてくる…というからくりですが、これでヒントになっていますか?--sumim - 2002-06-24, 18:35:51

>レスポンスはまだ悪いままです
どうぞお気になさらず。ゆっくり行きましょう。--sumim - 2002-06-24, 18:36:27

で「ある仕組み」はいったん知らないということにして(事実、ご存じないわけですが…(^_^;))「地球人 class >> #の:瞳の色は:で:」「ムーンレイス class >> #の:瞳の色は:で:」をそれぞれ定義するとどんな感じになるでしょう。ちなみに「人間 class >> #の:瞳の色は:で:」はそのままで(削除しなくて)結構です。「地球人 class >> #の:瞳の色は:で:」「ムーンレイス class >> #の:瞳の色は:で:」を見つけた時点で「人間 class >> #の:瞳の色は:で:」を探しにいかなくなるので自動的に無視されます。「ある仕組み」の説明のときに使いたい…という目論みもあります。--sumim - 2002-06-24, 18:43:24

>人間→地球人の間違いだと思うのですが
でした(^-^;)。
やっと体調が戻ってきたので今夜あたり↑やってみます。
で、登録するのは人間classに登録したのと同じものでよいですね? --さ茂@AirH" - 2002-06-27, 12:30:14

ええ。とりあえずそれで。で、それぞれに無駄な部分、不可欠な部分、後者はさらにムーンレイスと地球人で共通の部分が見えてくると思うので、考えてみてください。--sumim - 2002-06-27, 12:43:27

「地球人 class >> #の:瞳の色は:で:」
|登場人物|
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
self = 地球人
ifTrue: [登場人物 が好きなのは: (self の: 'キエル・ハイム')].
^ 登場人物

と、

「ムーンレイス class >> #の:瞳の色は:で:」
|登場人物|
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
self = ムーンレイス
ifTrue: [登場人物 が好きなのは: (self の: 'ディアナ・ソレル')].
^ 登場人物

を設定しました。
念のため「人間 class >> #の:瞳の色は:で:」をコメントアウト(?)してみて、キースとリリを登録しましたがうまくいきました。
ifTrue一個だけだったのでうまくいかないと思ったんですが(^-^;)。
ifFalseに指定が無いと黙って別の刺激を探すのでしょうか? --さ茂 - 2002-06-27, 18:25:09

>登録するのは人間classに登録したのと同じもの
のはずでは(^_^;)? コピペ& accept で結構です。変えちゃうと話が進みません。あと「コメントアウト」ちゅうのも勘弁してください。汗、汗っ。--sumim - 2002-06-27, 18:49:24

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある人間」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
self = ムーンレイス
ifTrue: [登場人物 が好きなのは: (self の: 'ディアナ・ソレル')]
ifFalse: [登場人物 が好きなのは: (self の: 'キエル・ハイム')].
^ 登場人物


↑これです。これをそのまま「地球人 class」と「ムーンレイス class」にコピペ& accept 。--sumim - 2002-06-27, 18:52:11

で、改めて「それぞれに無駄な部分、不可欠な部分、後者はさらにムーンレイスと地球人で共通の部分が見えてくると思うので、考えてみてください」っちゅうのを是非。--sumim - 2002-06-27, 18:53:55

>それぞれに無駄な部分、不可欠な部分、後者はさらにムーンレイスと地球人で共通の部分が見えてくると思うので、考えてみてください。
そのために要らないとおぼしき部分を削って試してみたんですけど……(^-^;)。<生意気な生徒m(_ _)m
で、言われた通りに戻しました。
……がこれでは動作が確認できない(どの刺激が働いているのか?)と思ったんです(^-^;)。<あくまで言い訳m(_ _)m --さ茂 - 2002-06-27, 19:10:01

>…がこれでは動作が確認できない
ぼちぼち、どこになにをどう仕掛けたら、どう動くのかを具体的にイメージしていただけるようになっていただこう…という思惑もあります(で、同じものを敢えていろいろな場所にしかけてみようと)。もちろん、心意気は買わせていただきます(笑)。でも、まあ、順序よくいきましょう。まず、ムーンレイス class >> #の:瞳の色は:で: から。まあ、当然、コピペなのでこう↓なるわけですが、どこが無駄でしょうか?--sumim

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある人間」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
self = ムーンレイス
ifTrue: [登場人物 が好きなのは: (self の: 'ディアナ・ソレル')]
ifFalse: [登場人物 が好きなのは: (self の: 'キエル・ハイム')].
^ 登場人物


ヒントは、この刺激、つまり「ムーンレイス class >> #の:瞳の色は:で:」に従ってオブジェクトが反応するとき、self にはどんなオブジェクトがぶら下がるのか…です。 - 2002-06-27, 19:50:11

>ぼちぼち、どこになにをどう仕掛けたら、どう動くのかを具体的にイメージしていただけるようになっていただこう…という思惑もあります
まだそこまでいってません(T-T)。具体的に書き込み、do-itして、あーだこーだするのが関の山(T-T)。応用はきかないし(T-T)。とほほ。
ぶらさがる、のは「ムーンレイス」か「地球人」の二通りですよね?
でもさっぱり先が見えません(T-T)。--さ茂 - 2002-06-27, 21:06:49

では質問を変えましょう。「ムーンレイス の: '兵士' 瞳の色は: '黒' で: '男'」と「地球人 の: '兵士' 瞳の色は: '黒' で: '男'」で、「ムーンレイス class >> #の:瞳の色は:で:」を使うのはどちらのときですか?--sumim - 2002-06-27, 21:14:59

「ムーンレイス の:兵士……」ですよね? --さ茂 - 2002-06-27, 21:32:53

そうですね。「地球人 の: '兵士' 瞳の色は: '黒' で: '男'」は「地球人 class >> #の:瞳の色は:で:」のほうを使いますから。では、あらためて。「ムーンレイス class >> #の:瞳の色は:で:」の中に書いてある self には何がつながりますか? --sumim - 2002-06-27, 21:39:33

さらに具体的に言うと、

self = ムーンレイス
ifTrue: [登場人物 が好きなのは: (self の: 'ディアナ・ソレル')]
ifFalse: [登場人物 が好きなのは: (self の: 'キエル・ハイム')].


の部分をもっとシンプルにできますよね?(先にしていただいた修正は、目の付け所はよかったのですが、つっこみが足りなかった…という感じです)--sumim - 2002-06-27, 21:44:20

うー……。

登場人物 が好きなのは: (self の: 'ディアナ・ソレル').

ではどうでしょう? まだシンプルにできますか? --さ茂 - 2002-06-27, 22:26:57

いえ。それでオッケーです。self は常に ムーンレイスですから条件分岐はいりません。なので、「ムーンレイス class >> #の:瞳の色は:で:」は

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある人間」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
登場人物 が好きなのは: (self の: 'ディアナ・ソレル').
^ 登場人物


と書き換えられますね。もちろん「人間 class >> #の:瞳の色は:で:」時代のなごりである“人間”という表現を排して、

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「あるムーンレイス」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
登場人物 が好きなのは: (self の: 'ディアナ・ソレル').
^ 登場人物


とコメントを書き換えた方が親切ですが…。同様に「地球人 class >> #の:瞳の色は:で:」も、self がいつも地球人、つまり“ムーンレイスではない”ので、

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある地球人」を返す"
| 登場人物 |
登場人物 _ (self new の: ある名前 瞳の色は: ある色 で: 男か女).
登場人物 が好きなのは: (self の: 'キエル・ハイム').
^ 登場人物


と書き換えられると思います。ここまでよろしいでしょうか? --sumim - 2002-06-27, 22:38:22

了解しました。
どうもif条件の呪縛(しがらみ?)を脱する余裕がなかなかなかったです(^-^;)。--さ茂 - 2002-06-27, 22:57:58

>if条件の呪縛(しがらみ?)を脱する余裕
この余裕と柔軟性を持とうというのが解答2のテーマです。定義する場所を選んで、条件分岐をなくそうという発想です。--sumim - 2002-06-27, 23:03:13

では、ちょっと蚊帳の外になってしまっている「人間 class >> #の:瞳の色は:で:」をいじりましょう。まず、ここで書かれた仕様は ムーンレイス class や 地球人 class がそれぞれ持っていますから、もはや不要ですのでとりあえず元に戻したいと思います。ここで versions という機能を使いたいと思います。--sumim

browser で「人間 class >> #の:瞳の色は:で:」を呼びだし、メッセージ枠(上の段の右端の枠)の黄ボタンメニューから versions を選びます。すると新しいウインドウが開いて、上になにかのリストが、下にコード枠が出ます。上の枠には実は、これまで「人間 class >> #の:瞳の色は:で:」に加えられた変更の履歴が記録されています。--sumim

この履歴の一番最初(リストの最後のもの)をクリックすると、最初に定義した「人間 class >> #の:瞳の色は:で:」を呼び出すことができます。おそらく、こんな感じでは?

の: ある名前 瞳の色は: ある色 で: 男か女
"基本的な状態を設定した「ある人間」を返す"
^ self new の: ある名前 瞳の色は: ある色 で: 男か女


これに戻すには、上のリスト枠の黄ボタンメニューから revert to selected verison を選びます。--sumim - 2002-06-27, 23:26:00
移動しましょう。

このページを編集 (22706 bytes)


Congratulations! 以下の 2 ページから参照されています。

This page has been visited 3518 times.