我如何使用两个表达式(case)在Flex中编写内联条件语句?

时间:2012-01-07 14:00:21

标签: actionscript-3 flex flash-builder mxml

我如何使用两个表达式(case)

在Flex中编写内联条件语句

喜欢

text="{expression, expression2 ? true:false}"

Flex编译器只检查第一个表达式并代表给出结果。但我想检查语句和显示结果。如果没有条件,那么什么都不做。

4 个答案:

答案 0 :(得分:11)

如果我正确理解你的问题:

text = ((expression) && (expression2)) ? true : false;

text = ((expression) || (expression2)) ? true : false;

[更新1]

嗯,我也说,但是第一次测试是否两个条件都是真的,第二次测试是否两种条件都是真的,我认为是你想要的条件。

[更新2]

一个例子

((1.1 is int) && (1.1 is Number)) ? true : false;

这会给你假,因为表达式(1.1 is int)为false,并且两个表达式都必须为true才能返回true。

((1.1 is int) || (1.1 is Number)) ? true : false;

当表达式(1.1 is Number)为真时,这将返回true,并且只有一个表达式必须为true才能返回true。

[最终更新]

最后一个例子:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:VGroup>
        <s:Label id="label1" text="{((1.1 is int) &amp;&amp; (1.1 is Number)) ? 'true' : 'false'}"></s:Label>
        <s:Label id="label2" text="{((1.1 is int) || (1.1 is Number)) ? 'true' : 'false'}"></s:Label>
    </s:VGroup>
</s:Application> 

如果您使用&&,则会出现错误,您可以使用&amp;&amp;

答案 1 :(得分:5)

有很多方法,你可以这样写:

(condition1 && condition2) ? statement if true : statement if false

但是如果要在mxml组件绑定中执行此代码,则必须使用:

'&amp &amp'代替&&'&lt'代替<等。

答案 2 :(得分:0)

我会写下面的语句:

var expression1:Boolean;
var expression2:Boolean;
var result:Boolean;

expression1 = condition?true:false;
expression2 = anotherCondition?true:false;

result = expression1&&expression2;

答案 3 :(得分:0)

如果您希望将它们放在一个if语句中,请分别使用andor运算符:&&~ and ||`。例如:

var x:int = 6
if (x > 3 && x < 10) {
    trace("both are true, so its contents will be acted on.");
}

var bob:Boolean = true;
if (x > 10 || bob) {
    trace("x > 10 is false, but bob is true, so this will also be acted on.");
}

您还可以使用返回布尔值的函数

function y (z:int):Boolean {
    if (z < 10) {
        return false;
    } else {
        return true;
    }
}

实际上,我可以将其简化为

function y (z:int) {
    return z >= 10;
}

然后在一组条件中使用该函数:

if (x < 5 && y(x)) { trace ("something here"); }

如果分配给String或与String连接,则将布尔值转换为字符串。