文字列内埋め込み要素の展開¶
概要¶
YAYAでは変数や関数を文字列内に埋め込み、その結果を指定した位置に挿入できる。
2種類の展開方式¶
1. 範囲付き展開¶
構文: %( ) で要素を囲む
カッコ内はコードとして評価される。変数だけでなく式もサポートする:
"This is a %(variable)."
"The sum is %(1+2+3)."
特徴:
- 複雑な式や数学演算をサポート
- 文字列内にダブルクォートを含めることができない
- 辞書読み込み時に静的に解析されるため、
DICLOADで動的に読み込まれた関数は認識されない - 動的な評価が必要な場合は
EVAL関数を使用する
演算子優先度: カッコが評価順序を制御する。深いネストほど先に実行される。必要なら %((expression)) のように余分なカッコを使う。
2. 名称最長一致展開¶
構文: カッコなしで % のみ使用
% の後に続く最長の変数名または関数名にマッチする:
object = "world"
"This is a %object." // 結果: "This is a world."
特徴:
- 展開対象は現在定義されている変数・関数によって変わる
%[i]構文(0始まりインデックス)で展開結果を再利用できる:"First: %planet, Second: %city, reuse first: %[0]"- 実行時に名前解決するため、範囲付き展開より大幅に遅い
- パフォーマンスが重要なコードには推奨しない
注意: %[i] 構文は名称最長一致展開でのみ機能し、範囲付き展開では使えない。