2

ant-contrib の for/foreach ループは、"break" または "continue" ステートメントと同等のものをサポートしていますか? 私が知る限り、そうではありません。

実行可能な回避策はありますか?

ありがとう -T

4

3 に答える 3

4

この動作を実装する簡単な方法はありませんが、次の提案が役立つかもしれません。

  • forタスクを使用します(つまり、foreach ではありません)。
  • keepgoing属性を true に設定します
  • スキップする必要がある項目が失敗するように、failタスクを条件付きで使用します。

ブレークする必要があることを検出するたびに、プロパティを定義することでブレークのようなものを取得できますmyBreakProperty

 <for list="a,b,c,d,e" param="letter" keepgoing="true">
    <sequential>
       <if>
         <equals arg1="@{letter}" arg2="c" />
       <then>
         <property name="myBreakProperty" value="nevermind the value"/>
       </then>
     </if>
     <fail if="myBreakProperty"/>
     <echo>Letter @{letter}</echo>
    </sequential>
 </for>

出力は次のようになります。 Letter a Letter b


continueのようなものを取得するには:

 <for list="a,b,c,d,e" param="letter" keepgoing="true">
    <sequential>
       <if>
         <equals arg1="@{letter}" arg2="c" />
       <then>
         <fail/>
       </then>
     </if>
     <echo>Letter @{letter}</echo>
    </sequential>
 </for>

出力は次のようになります。 Letter a Letter b Letter d Letter e

于 2013-03-28T09:26:57.883 に答える