【美坂→文移行メモ】 妖介 ※激しく未完成版です。ホントにメモです。いやマジで。 ※俺よりくーぷらんさんのほうが絶対詳しいです。いやマジで。 【1】変数・配列  美坂のシンボルは関数と変数の区別がない。そこに記述された一行を1要素とみなし、シンボル内に書かれた全行から1行をランダムで取り出して実行する。  美坂が「明確に1行」(つまり行頭〜改行コード)が1要素であるのに対し、文の関数では「結果が返る処理」を1要素とする。評価された結果、値(文字列を含む)が残った時点でそこまでが1要素となる。  簡単な例を挙げると、 foo { _tmp = 1 "test" ← _tmp1 = 0 _tmp2 = 2 "test2" ← }  矢印の行のなかからランダムでひとつ選ばれる。  また美坂の場合複数要素を持つシンボルは配列として処理できる(添え字を付与することで明示的に値を取り出せる)が、文は関数であるためこのように使用することは出来ない。  文で配列を実現する場合は、カンマセパレートされた変数を簡易配列として使用する。 【2】関数  美坂にしろ文にしろ上位モジュールから通知されたイベントに対し最終的にさくらスクリプトを返す(ただしNotifyを除く)のは同じだが、辞書の中からそれを探す動作は根本的に違う。  美坂は基本的に、条件によって行いたい処理を同じシンボルでひとつひとつ記述し、if文による採用条件式で区別する。美坂はmisaka.iniでインクルードされた順にシンボルを探し、条件に一致した採用条件式を持つシンボル(インクルード順優先)を評価対象としている。  文の場合はシンボルはひとつであり、その中で if 文によるブロックに分けることで区別する。そのためゴースト稼働でよく登場する OnChoiceSelect などは if 文が多くネストされた状態で記述されることが多い。  ※「シンボル」と言ったが文の場合は「関数」である。  美坂→文で最大のネックになるのはここで、採用条件式に慣れた「偽栞→美坂」乗り換え組の人間には慣れるまでが辛い。そこでこういった救済措置がくーぷらん氏の Tips ページ「へたれデベロパ悪戦苦闘記」(http://f1.aaacafe.ne.jp/~couperin/hetare.html)の「■OnChoiceSelect(選択肢が選択されたとき)の記述を簡単に。&多重人格モードのやり方。(2002.06.07)」に記載されている。  具体的には、 OnChoiceSelect { CALLBYNAME(reference0) }  こう記述する。たとえば reference0 の内容が「cancel」だった場合、 cancel { "\0\s[8]。・゚・(ノД`)・゚・。\e" }  こうすることで、\q[キャンセル,cancel] に対応する処理を簡潔に記述出来る。  なお筆者は reference0 の内容と、全く無関係な関数名が衝突するのを避けるためにこうしている(特に推奨はしない)。 OnChoiceSelect { CALLBYNAME("choice_" + reference0) } choice_cancel { "\0\s[8]。・゚・(ノД`)・゚・。\e" } 【3】いろいろ。 ・ローカル変数とは変数名の前に「_」が付き、その関数内でのみ有効となる変数である。ローカル変数はその関数内だけで使われ、関数を抜けると破棄される。つまり文のセーブファイルである「aya_variable.cfg」には保存されない。   ・$append(s, a)はこういう関数を記述することで実現できる。 append { _argv[1] += ',' + _argv[2] }  呼び出すときは、append(&s, a)とする(配列名は参照渡しにすること)。りゅうさん、umeici さん、あの節はどうも。 ・とりあえずここまで。  あとでまた追記するかも。