【发布时间】:2018-02-16 03:11:05
【问题描述】:
我正在尝试使用 ant 来构建针对各种条件的结构。 我要根据他们所属的大陆为地球和大陆的所有国家行动
<if>
<or>
<equals arg1="${country}" arg2="US" />
<equals arg1="${country}" arg2="CA" />
</or>
<then>
<!-- do stuff -->
</then>
<elseif>
<or>
<equals arg1="${country}" arg2="DE" />
<equals arg1="${country}" arg2="AT" />
<equals arg1="${country}" arg2="FR" />
<equals arg1="${country}" arg2="NL" />
<equals arg1="${country}" arg2="SE" />
<equals arg1="${country}" arg2="ES" />
..
</or>
<then>
<!-- do stuff -->
</then>
</elseif>
<elseif>
<or>
<equals arg1="${country}" arg2="JP" />
<equals arg1="${country}" arg2="KR" />
<equals arg1="${country}" arg2="AU" />
<equals arg1="${country}" arg2="SA" />
<equals arg1="${country}" arg2="PL" />
<equals arg1="${country}" arg2="CN" />
..
</or>
<then>
<!-- do stuff -->
</then>
</elseif>
</if>
现在,如果您可以想象有 200 多个国家/地区 + 我也想对将导致非常大的文件的语言使用 NOT、AND 和 OR 条件,以后将很难修改和维护。 有没有办法通过将所有国家/地区排序为文件中的数组或列表并让 ant 从该文件中读取来最小化代码。 外部文件:
North_America=["US","CA"]
Europe=["DE","GB","FR",...]
Asia=["JP","PL","CN",..]
AFRICA=[..]
South_America[..]
那么像这样使用ant就很简单了:
<if>
<equals arg1="${country}" arg2="${North_America}" />
<then>
<!-- do stuff -->
</then>
<elseif>
<equals arg1="${country}" arg2="${Asia}" />
<then>
<!-- do stuff -->
</then>
</elseif>
<elseif>
<equals arg1="${country}" arg2="${Africa}" />
<then>
<!-- do stuff -->
</then>
</elseif>
..
</if>
我的问题不是如何在 ant 中加载或读取属性文件,而是如何从数组或列表中读取值
<equals arg1="${country}" arg2="${Asia}" />
“亚洲”在哪里是数组(或列表),如果第一个 arg 等于该数组的任何值,是否有可能在 ant 中实现这样的 IF 条件?或者即使有更好的方法来完成这项任务。
【问题讨论】: