[[トップ>FrontPage]] > [[MAP作成]] > [[トリガーエディタ]] > [[Jass Script]] > [[Jass講座]] > TextMacro
~
~
Jass NewGenの機能。単純なコードの繰り返しなどを省くことができる機能。コードをすっきり見せるのに便利。MAP保存時に、通常の形にコンパイルされる。
----
#contents
----
*定義 [#n8dab3a5]
テキストマクロは、''指定した範囲のコードの変数部分を置換したもの''を、繰り返し記入する際用いられる。
-範囲の指定
//! textmacro マクロ名 takes 変数名1,変数名2,...
〜$変数名1$〜
〜$変数名2$〜
//! endtextmacro
範囲内には、変換させたい変数を ''$変数名$'' の形で書いたコードを記入する。次に、変数の値を指定してこれの複製を行う。
-範囲の複製
//! runtextmacro sample("変数1の値","変数1の値")
変数の値は、ダブルクォーテーション(")で挟む。これで、指定した範囲内のものの、それぞれの ''変数名'' が置換された文章が出力される。
範囲は何行あってもかまわないし、''library'' や ''struct'' 等を含めてもかまわない。
また、同じマクロ名をもつテキストマクロは宣言できないが、一度宣言されたテキストマクロは、コードのどの位置にも(たとえ上流であっても)挿入できる。
*使い方のサンプル [#of832161]
以下のようなコードがあるとする。
-テキストマクロなし
function test takes integer t returns nothing
local integer i1 = t * 1
local integer i2 = t * 2
local integer i3 = t * 3
local integer i4 = t * 4
local integer i5 = t * 5
local integer i6 = t * 6
local integer i7 = t * 7
これを、テキストマクロを使って書くと
-テキストマクロあり
function test takes integer t returns nothing
//! textmacro sample takes n
local integer i$n$ = t * $n$
//! endtextmacro
//! runtextmacro sample("1")
//! runtextmacro sample("2")
//! runtextmacro sample("3")
//! runtextmacro sample("4")
//! runtextmacro sample("5")
//! runtextmacro sample("6")
//! runtextmacro sample("7")
このようになる。この例ではいまいちありがたみを感じないが、以下のような利点がある。
-もとの文章を改変したいとき、訂正が一箇所ですむ
-複製範囲が複数行にわたるとき、コードが見やすくなる
*注意点 [#xe2fe9d1]
複数のテキストマクロを、ネストすることはできない。
-エラーが出る例
//! textmacro sample1 takes n1
//! textmacro sample2 takes n2
set $n1$ = $n2$
//! endtextmacro
//! endtextmacro