コンテンツにスキップ

文字列内埋め込み要素の展開

概要

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] 構文は名称最長一致展開でのみ機能し、範囲付き展開では使えない。