()の展開¶
本文の中の全角の ( ) で囲まれた部分は、里々が展開して別の文字列に置き換えます。
今日は(現在曜日)曜日です。→ 今日は火曜日です。
名前の解決順序¶
(名前) は、次の順に調べて、最初に見つかったものに展開されます。
- 関数の呼び出し:
(名前、引数…)の形で、名前が登録済みの SAORI(ssu を含む)・内蔵関数・特殊形式のとき。 - 単語群:
@名前があれば、その中の 1 つをランダムに選ぶ。 - 文:
*名前があれば、その文を実行した結果(さくらスクリプトになる)。 - 変数: 存在する変数、または
R0A0S0H1C0などの参照値(参照値は範囲外なら空文字列)。存在しない変数は、ここでは見つからない扱いになる。 - 数字: 数字だけの名前(
-から始まってもよい)は、サーフェスの切り替え(サーフェス)。 - 組み込み名:
Aの数乱数現在年など(組み込み名)。 - 見つからなければ、
(名前)のままの文字列を残し、ログにnot foundと出す。
式の中で使ったとき(式)は、見つからない名前や空の結果は 0 になります。
入れ子¶
() は入れ子にできます。内側から先に展開され、その結果を使って外側が展開されます。
@今日のおやつ
ケーキ
((今日のおやつ)の説明) ← (ケーキの説明) として展開される
引数区切り¶
関数を呼び出すときの引数は、次の文字で区切ります。
| 区切り |
|---|
,(半角カンマ) |
、(読点) |
、(半角の読点) |
,(全角カンマ) |
| バイト値 1 |
- 1 回の呼び出しでは、最初に見つかった区切り 1 種類だけを区切りとして使います。
(calc、1+2)は、で区切られます。 $引数区切り追加$引数区切り削除で区切りを増減できます(その他)。- 単語群や文の名前に区切り文字を含めると、関数の呼び出しとして解釈されないよう注意してください(関数名として登録されているものが先頭にあるときだけ、関数の呼び出しになります)。
引数の展開のタイミング¶
- 通常の関数は、
()の内側の()を先にすべて展開してから引数に分けます。このため、展開結果に区切り文字が含まれると、引数が余分に分かれます。 - 特殊形式(
whenなど)は、先に引数に分けてから、必要な引数だけを展開します。
引数の計算¶
SAORI(ssu を含む)の引数は、条件によって、里々が先に整数の式として計算してから渡します。ssu の引数の計算を参照してください。
結果の再展開¶
SAORI が返した結果に () が含まれていると、もう一度展開されます。
展開の履歴¶
トークの中で展開された () の結果は順に記録され、(H1) (H2)… で再び参照できます(H(履歴))。
展開の制限¶
- 入れ子の深さは $呼び出し回数制限(既定 200)まで。
()の書き方そのものの入れ子は、最大 1000 段(括弧の入れ子の深さ。Mc201-8以降)。 - 1 回のリクエストで行える呼び出しの合計は $呼び出し総数制限(既定 100000)まで(Mc201-8以降)。
- 1 つの展開結果の長さは $括弧展開サイズ制限まで。
)が閉じていない(は、そのまま(として出力されます。
展開の対象にしない¶
( ) を文字として表示したいときは、φ( φ) と書きます(前処理)。