Как написать встроенное условное выражение во Flex с двумя выражениями (регистр)? - PullRequest
2 голосов
/ 07 января 2012

Как написать встроенное условное выражение во Flex с двумя выражениями (регистр)Я хочу проверить и заявление и показать результат.если не выполнено ни одного условия, ничего не делать.

Ответы [ 4 ]

11 голосов
/ 07 января 2012

Если я правильно понимаю ваш вопрос, либо:

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) ложно, и оба выражения должны быть истинными, чтобы возвращать истину.

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

Это вернет true, так как выражение (1.1 is Number) истинно, и только одно выражение должно быть 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;.

5 голосов
/ 08 января 2012

Есть несколько методов, вы можете просто написать так:

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

но если вы хотите выполнить этот код в привязках компонента mxml, вы должны использовать:

'&amp &amp' вместо &&, '&lt' вместо < и т. Д.

0 голосов
/ 07 января 2012

Если вы хотите использовать их в одном операторе if, используйте операторы and или or: &&~ 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"); }

Логические значения преобразуются в строки, если они назначены или объединены со строкой.

0 голосов
/ 07 января 2012

Я бы написал вместо этого следующие утверждения:

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

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

result = expression1&&expression2;
...