2013-03-28 2 views

ответ

4

Там нет простого способа реализовать это поведение, но, возможно, следующее предложение поможет.

  • использовать в for task (т.е. не в Еогеасп)
  • установить атрибут keepgoing истинного
  • использовать fail task с условием, так что элементы, которые должны быть пропущены не удастся.

вы можете получить что-то вроде перерыва определяя свойство 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


Чтобы получить что-то вроде cont inue:

<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

+0

Спасибо! Это сработало. –

1

Вы можете сделать поток процесса перерыв не работает что-то, как суровую как неудачу. Используя свойство для обнаружения, когда вы хотите сломать, вы можете реализовать что-то вроде этого:

<var name="break.flag" unset="true"/> 

<for list="a,b,c,d,e" param="letter"> 
    <sequential> 
     <if> 
      <not> 
       <isset property="break.flag"/> 
      </not> 
     <then> 
      <if> 
       <equals arg1="@{letter}" arg2="c" /> 
      <then> 
       <property name="break.flag" value="true"/> 
      </then> 
      </if> 

      <if> 
       <not> 
        <isset property="break.flag"/> 
       </not> 
      <then> 
       <echo>Letter @{letter}</echo> 
       <echo>Do the rest of the loop here</echo> 
      </then> 
      </if> 
     </then> 
     </if> 
    </sequential> 
</for> 
+0

Ваш код не работает, вам нужно отменить флаг, если он попадает – sloven

Смежные вопросы