代码之家  ›  专栏  ›  技术社区  ›  java.is.for.desktop

如何使用“条件”来模拟“如果其他”逻辑?

  •  3
  • java.is.for.desktop  · 技术社区  · 16 年前

    我知道有 ant-contrib 它为Ant提供了“if else”逻辑。 但我也要做到这一点 没有 蚁兽 . 有可能吗?

    我需要使用的伪代码:

    if(property-"myProp"-is-true){
      do-this;
    }else{
      do-that;
    }
    

    谢谢您!

    2 回复  |  直到 16 年前
        1
  •  4
  •   Michael Rutherfurd    16 年前

    无论如何,我强烈推荐使用ant contribs,但是如果您测试的属性总是有一个值,那么我将研究使用ant宏参数作为新属性名称的一部分,然后测试

    <macrodef name="create-myprop-value">
     <attribute name="prop"/>
     <sequential>
          <!-- should create a property called optional.myprop.true or -->
          <!-- optional.myprop.false -->
          <property name="optional.myprop.@{prop}" value="set" />
     </sequential>
    </macrodef>
    
    <target name="load-props">
      <create-myprop-value prop="${optional.myprop}" /> 
    </target>
    
    <target name="when-myprop-true" if="optional.myprop.true" depends="load-props">
    ...
    </target>
    
    <target name="when-myprop-false" if="optional.myprop.false" depends="load-props">
    ...
    </target>
    
    <target name="do-if-else" depends="when-myprop-true,when-myprop-false">
    ...
    </target>
    
        2
  •  3
  •   G__    16 年前

    您可以在目标中放置“if”属性。

    <target name="do-this-when-myProp-is-true" if="myProp">
    ...
    </target>
    

    只有在设置了“MyProp”时才会触发。您需要在其他地方定义myprop,以便在希望此目标开火时设置myprop,如果不希望,则不设置myprop。除非用于其他情况,否则可以使用:

    <target name="do-this-when-myProp-is-false" unless="myProp">
    ...
    </target>