「式展開」の編集履歴(バックアップ)一覧はこちら
「式展開」(2015/01/18 (日) 15:14:54) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
&bold(){式展開}とは、
>#{xpress}
が文字列に含まれる場合、XOSの解釈時にxpressを&bold(){式}としてその演算結果と置換する機能のことです。
ダブルクォートで囲まれた文字列は&bold(){式展開}が有効になります。
式展開では四則演算(+,-,*,/)及び括弧&bold(){()}によるグループ化を使った数式が有効です。例えば、
>#{4 + 2 * 3}
と記述された場合、括弧の中が計算され(スペースは無視)、&bold(){10}に置換されます。
すなわち、この表現は
>10
と全く同じ意味を持つことになります。
定数式は一般に直接結果を記述したほうが見栄えが良くなりますが、&bold(){[[変数]]}を使える点で定数表現より優れます。
変数を使う場合、変数名の頭に@を付加します。例えば、
>#{@foo * @bar}
と記述したとき、変数fooとbarが[[<define>]]によって定義されていた場合、両者に代入された値どうしを乗じた結果に置換されます。
この表現によって、スコアやゲージ量といった動的な情報をオブジェクト要素に使うことができます。
除算&bold(){/}は、&bold(){除数(割る数)}が[[整数>値の種類の一覧]]なら除算結果は整数(小数点以下&bold(){四捨五入})に、除数が実数なら除算結果は実数(小数)になります。
値を[]で囲むと括弧内の小数点以下を切り捨てます。
四則演算子は、文字列に対しては加算&bold(){+}と乗算&bold(){*}が有効です。
>#{@foo + @bar}
と記述したときに、[[変数]]fooに"あいう"、変数barに"えお"が代入されていた場合、&bold(){あいうえお}に置換されます。
>#{あいう * 3}
と記述された場合、&bold(){あいうあいうあいう}に置換されます。乗数(*の右側)は自然数でなければなりません。
比較演算子(==,<,>,<=,>=)を用いることで&bold(){比較演算}を行うことができます。
>#{@foo >= 4}
と記述された場合、[[変数]]fooが&bold(){4以上}である場合は&bold(){TRUE}に、&bold(){4未満}である場合には&bold(){FALSE}に置換されます。
他の演算子でも同様に、比較演算では必ずTRUEとFALSEのどちらかに置換されます。
整数どうしの比較演算を行う場合、&bold(){範囲式}が有効です。式展開の内部で
>1..8
>1...9
と記述された場合範囲式になります。範囲式は比較演算の右辺でのみ使用可能で、両者とも1から8までの任意の整数を意味します。".."の場合は終端を含み、"..."の場合は含みません。
>#{4 == 3..6}
はTRUEになります。これは
>#{(4 >= 3) and (4 <= 6)}
と同じ意味になります。
扱う値が[[論理値>値の種類の一覧]]のみの場合、論理演算子(and,or,xor,not)を使うことができます。
>#{@foo and @bar}
は、論理値変数@fooと@barが共にTRUEであった場合TRUE、それ以外の場合はFALSEになります。
>#{@foo or @bar}
は、論理値変数@fooと@barが共にFALSEであった場合FALSE、それ以外の場合はTRUEになります。
>#{@foo xor @bar}
は、論理値変数@fooと@barが異なる論理値であった場合TRUE、同じ論理値であった場合FALSEになります。
>#{not @foo}
notは直後にある論理値を反転させます。論理値変数@fooがTRUEならFALSE、FALSEならTRUEになります。
>#{@foo and @bar and @baz}
などと(括弧を伴わずに)連続で記述した場合、前にある要素が優先されます。
この場合まず@fooと@barとでand演算が行われ、その結果と@bazとでand演算が行われ、その結果が最終的な結果になります。
括弧でグループ化した場合は括弧の中が優先されます。
論理演算子を論理値の変数以外に対して使う場合、その変数が定義されていれば&bold(){空文字列と"0"}はFALSE、それ以外の値はTRUEとして扱われます。
式展開はどのタグの[[要素と属性]]にも使うことができますが、要素や属性として求められている形式と置換後の[[値の形式>値の種類の一覧]]が一致しない場合、エラーが起こります。
&bold(){定義されていない変数を参照すると値は必ずFALSEになります}。論理演算以外で未定義変数を用いるとエラーとなります。
シングルクォートで囲まれた文字列では式展開が無効になります。
また、シャープ&bold(){#}そのものを使いたい場合、&bold(){&sh}と記述することで式展開を回避できます。
要素で式展開を使う場合ダブルクォートは省略できます。逆に式展開を回避したい場合はシングルクォートを明記する必要があります。
&bold(){式展開}とは、
>#{xpress}
が文字列に含まれる場合、XOSの解釈時にxpressを&bold(){式}としてその演算結果と置換する機能のことです。
ダブルクォートで囲まれた文字列は&bold(){式展開}が有効になります。
式展開では四則演算(+,-,*,/)及び括弧&bold(){()}によるグループ化を使った数式が有効です。例えば、
>#{4 + 2 * 3}
と記述された場合、括弧の中が計算され(スペースは無視)、&bold(){10}に置換されます。
すなわち、この表現は
>10
と全く同じ意味を持つことになります。
定数式は一般に直接結果を記述したほうが見栄えが良くなりますが、&bold(){[[変数]]}を使える点で定数表現より優れます。
変数を使う場合、変数名の頭に@を付加します。例えば、
>#{@foo * @bar}
と記述したとき、変数fooとbarが[[<define>]]によって定義されていた場合、両者に代入された値どうしを乗じた結果に置換されます。
この表現によって、スコアやゲージ量といった動的な情報をオブジェクト要素に使うことができます。
除算&bold(){/}は、&bold(){除数(割る数)}が[[整数>値の種類の一覧]]なら除算結果は整数(小数点以下&bold(){四捨五入})に、除数が実数なら除算結果は実数(小数)になります。
値を[]で囲むと括弧内の小数点以下を切り捨てます。
四則演算子は、文字列に対しては加算&bold(){+}と乗算&bold(){*}が有効です。
>#{@foo + @bar}
と記述したときに、[[変数]]fooに"あいう"、変数barに"えお"が代入されていた場合、&bold(){あいうえお}に置換されます。
>#{あいう * 3}
と記述された場合、&bold(){あいうあいうあいう}に置換されます。乗数(*の右側)は自然数でなければなりません。
比較演算子(==,<,>,<=,>=)を用いることで&bold(){比較演算}を行うことができます。
>#{@foo >= 4}
と記述された場合、[[変数]]fooが&bold(){4以上}である場合は&bold(){TRUE}に、&bold(){4未満}である場合には&bold(){FALSE}に置換されます。
他の演算子でも同様に、比較演算では必ずTRUEとFALSEのどちらかに置換されます。
整数どうしの比較演算を行う場合、&bold(){範囲式}が有効です。式展開の内部で
>1..8
>1...9
と記述された場合範囲式になります。範囲式は比較演算の右辺でのみ使用可能で、両者とも1から8までの任意の整数を意味します。".."の場合は終端を含み、"..."の場合は含みません。
>#{4 == 3..6}
はTRUEになります。これは
>#{(4 >= 3) and (4 <= 6)}
と同じ意味になります。
扱う値が[[論理値>値の種類の一覧]]のみの場合、論理演算子(and,or,xor,not)を使うことができます。
>#{@foo and @bar}
は、論理値変数@fooと@barが共にTRUEであった場合TRUE、それ以外の場合はFALSEになります。
>#{@foo or @bar}
は、論理値変数@fooと@barが共にFALSEであった場合FALSE、それ以外の場合はTRUEになります。
>#{@foo xor @bar}
は、論理値変数@fooと@barが異なる論理値であった場合TRUE、同じ論理値であった場合FALSEになります。
>#{not @foo}
notは直後にある論理値を反転させます。論理値変数@fooがTRUEならFALSE、FALSEならTRUEになります。
>#{@foo and @bar and @baz}
などと(括弧を伴わずに)連続で記述した場合、前にある要素が優先されます。
この場合まず@fooと@barとでand演算が行われ、その結果と@bazとでand演算が行われ、その結果が最終的な結果になります。
括弧でグループ化した場合は括弧の中が優先されます。
論理演算子を論理値の変数以外に対して使う場合、その変数が定義されていれば&bold(){空文字列}はFALSE、&bold(){それ以外の値}はTRUEとして扱われます。
式展開はどのタグの[[要素と属性]]にも使うことができますが、要素や属性として求められている形式と置換後の[[値の形式>値の種類の一覧]]が一致しない場合、エラーが起こります。
&bold(){定義されていない変数を参照すると値は必ずFALSEになります}。論理演算以外で未定義変数を用いるとエラーとなります。
シングルクォートで囲まれた文字列では式展開が無効になります。
また、シャープ&bold(){#}そのものを使いたい場合、&bold(){&sh}と記述することで式展開を回避できます。
要素で式展開を使う場合ダブルクォートは省略できます。逆に式展開を回避したい場合はシングルクォートを明記する必要があります。