簡體   English   中英

如何使用Flex SDK在Flex as3中使用非賦值表達式?

[英]How to use Non-assignment expressions in Flex as3 using Flex SDK?

我正在查看ActionScript 3規范 ,因為我注意到索引下的非賦值表達式 - > 14表達式> 14.18非賦值表達式。 是否可以通過三元運算符動態地為變量分配數據類型?:如下所述,如docx中所述。

可以在可以使用TypeExpression的地方使用NonAssignmentExpression。

var x : hintString ? String : Number

如果我在使用flex SDK構建它時可以在as3中使用語法錯誤

> src\App.mxml(29):  Error: Syntax error: expecting semicolon before String.
                   var x1: h1 ? String : Number;

對於以下代碼。

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:mx="library://ns.adobe.com/flex/mx"
            xmlns:s="library://ns.adobe.com/flex/spark"
            creationComplete="onComplete()">

    <fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        private function onComplete():void
        {
            //test 
            var h1:String = 'hai';
            var x1: h1 ? String : Number;
            Alert.show("Type of x1 :"+typeof(x1));

        }

    ]]>
    </fx:Script>

    <fx:Declarations>

    </fx:Declarations>

</s:Application>

如果有可能在as3中,為什么不在Flex? 我已經檢查了有關條件運算符的 Adobe文檔,但沒有提到像上面那樣的原因?

有趣的問題。 您在那里編寫的是ActionScript 3.0,因此無論您是在Flex上下文中編寫純ActionScript 3.0還是ActionScript 3.0,都無法構建該構造。 自從它出生以來我一直使用這種語言,而且我以前從未見過這種結構。

我最好的猜測是它必須是AS 3.0規范文檔中的錯誤。 擬議的ECMAScript第4版 - 語言概述文檔中沒有任何內容,這個Mozilla Tamarin錯誤報告頁面說它(引用)“未實現也不可實現”。

作為旁注,我正在努力想到這個結構的應用程序。

是的,非常有趣的問題,謝謝你的指點。 我試過了:

var h1:String = null; //(if try var h1:String = 'hai' the output will be [class String]
var x1 = h1 ? String : Number;
// probably the same result as x1:*

trace(x1); // [class Number]

我剛剛檢查了這個測試的abc,當我們使用這種方法或*時,它使用coerce_a (向驗證者指示堆棧上的值是任何類型(*)。沒有任何值。)

我同意@ net.uk.sweet,關於努力想到這個結構的應用程序..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM