0

<macrodef/>2 つの方法で呼び出すことができるa を実装したいと思います: 単一のファイル パラメーターを使用するか、 <fileset/>:

<macrodef name="sqlplus">
    <attribute name="file"/>
    <sequential>
        <!-- there be dragons, here -->
    </sequential>
</macrodef>

<macrodef name="sqlplus">
    <element name="files"/>
    <sequential>
        <for param="file">
            <path>
                <files/>
            </path>
            <sequential>
                <!-- call the other macro -->
                <sqlplus file="@{file}"/>
            </sequential>
        </for>
    </sequential>
</macrodef>

これはうまくいかないようです。「準」オーバーロードを実装するために使用できるトリックはありますか? または、マクロ定義の 1 つの名前を変更する必要がありますか? 私はこれを書いて、引数が設定されているかどうかを確認できることを知っています(たとえば、ant-contribを使用して):

<macrodef name="sqlplus">
    <attribute name="file"/>
    <element name="files" optional="yes"/>
    <!-- ... -->
</macrodef>

<attribute/>しかし、オプションにする方法はありません。

4

0 に答える 0