違いは何ですか
MACRO foo BLOCK
...
END
と
BLOCK foo
...
END
?
歴史的に私は常に後者を使用していましたが、以前は常に前者を使用していたように見える新しいショップに来て、何が違うのか疑問に思っていました.
違いは何ですか
MACRO foo BLOCK
...
END
と
BLOCK foo
...
END
?
歴史的に私は常に後者を使用していましたが、以前は常に前者を使用していたように見える新しいショップに来て、何が違うのか疑問に思っていました.
ブロックは事実上関数であり、呼び出されるMACRO
たびに再評価され、渡される変数はすべてマクロに対してローカルです。PROCESS
名前付きブロックは静的であるか、またはを介して呼び出され、INCLUDE
変数のスコープに関する通常の警告が適用されます。
例えば
MACRO foo (arg1, arg2) BLOCK;
... do something with arg1 and arg2
END;
...
Foo is a [% foo(bar,baz) %]
対
BLOCK foo
... do something with arg1 and arg2
END;
...
Foo is a [% PROCESS foo arg1=bar arg2=baz %]
要するに、MACRO
特に関数呼び出しのように見えて動作するコードの場合、構文ははるかに冗長ではありません。