わいあーど頭痛

「ロスト・エンド・クレイドル」更新情報などのブログ

意図しない動作の原因のひとつとしての名前被り(里々辞書を記述する時の話)

前提

【タブ】はタブ文字です。

例文

*おさかな食べたい
:なにかおさかな食べたいな。
$しゃけ食べよう【タブ】1
>しゃけ食べよう【タブ】(しゃけ食べよう)==1
:(4)でもなにもないよ……。

*しゃけ食べよう
:(5)しゃけ食べるよ!

問題点

これだと、確実に「しゃけ食べるよ!」と言ってくれるとは限りません。なぜでしょう。

  • 文の名前と変数の名前が同じである

>などで反応を分岐させるとき、何かの判定が必要です。
ここでは変数をカッコで呼び出そうとしています。
しかしこのカッコ、呼び出せるのは変数だけではありません。
具体的には文(*ではじまるもの)と単語(@ではじまるもの)も呼び出せるのです。あとサーフェス切り替えもですね。
例文では、「しゃけ食べたい」という名前のものは文と変数とが1つずつあります。
それら2つがランダムで選ばれるので、思い通りの動作にならない、というわけです。

解決例

  • 文の名前を変える*1
*おさかな食べたい
:なにかおさかな食べたいな。
$しゃけ食べよう【タブ】1
>しゃけ食べるぜ【タブ】(しゃけ食べよう)==1
:(4)でもなにもないよ……。

*しゃけ食べるぜ
:(5)しゃけ食べるよ!

*1:既にリリースされているゴーストさんだと、変数名を変えるのは手間がかかる