as 3メモ6-データ型(タイプチェック)


1、as 3はタイプチェックを行い、データ型が一致しているかどうかを確認します.
 
2、データ型が一致しない場合
  • は変数のタイプを宣言しますが、このタイプではない値を割り当てます.
    var num:Number;
    num = "str';
  • 宣言されたパラメータタイプとパラメータ値は異なります:
    function test(p:String):void{}
    
    test(3);
  • 3、いつ検査しますか.コンパイル時にチェックするか、実行時にチェックすることができます.コンパイルは2つのモード,厳格モード,標準モードに分けられる.厳格モードはコンパイル時にタイプチェックを実行し、標準モードは実行しません.ただし、両方のモードは実行時にチェックされます.
     
     
    4、厳格モードでタイプチェックを終了します.厳格モードでは、タイプチェックを回避し、タイプ変数なしを使用することもできます.
    例1:
    function test1(p):void{
        trace(p);
    }
    var a:Number = 10;
    var b:String = "Hello";
    
    test1(a);
    test1(b);
    

    例2:
    function test2(p:String):void{
        trace(p);
    }
    var a:* = 10
    
    test2(a); 

    例1と例2では,コンパイル時にエラーは報告されない.なぜなら、例1では、関数test 1のパラメータはタイプがないと宣言され、任意のタイプのパラメータを受信することができるからである.例2では,関数test 2のパラメータタイプは文字列であるが,我々が伝達するパラメータはタイプなしである.
    ただし、例2では、実行時に送信されるパラメータが数値型であり、宣言されたパラメータタイプと一致しないことが判明するため、実行時エラーが発生します.
     
    5、標準モードでコンパイルし、実際にはタイプチェックを実行時に遅らせることで、クラスの「アップロード」機能を実現できる.
    //  
    class ClassA extends ClassB{
        var name:String;
    }
    
    //  
    var some:ClassB = new ClassA();
    some.name="some";

    以上のようにClassAを定義し、ClassBから継承します.ClassAは自分の属性nameを定義します.次の呼び出しでは、ClassBタイプの変数someを宣言しますが、ClassAのインスタンスを割り当てました.これは合法的で、「アップロード」と呼ばれています.しかし、次にsomeのプロパティnameに値を割り当てますが、プロパティnameはClassBではなく、厳格なモードでコンパイルエラーが発生する場合がありますが、ランタイムエラーは発生しません.
     
    6、is演算子.変数または式が所定のデータ型のメンバーであるかどうかをテストし、trueまたはfalseを返します.
    仮定:
  • 存在クラスA
  • クラスA継承クラスB
  • クラスA実装インタフェースIM
  • クラスB継承クラスC
  • クラスC実装インタフェースIN
  •  
    あります.
    var a:A=new A();
    
    a is A;    //true
    a is B;    //true
    a is C;    //true
    a is IM;  //true
    a is IN;  //true
    //B、C A   ,IM、IN A     
    

    上の各式はtrueです.
     
    instanceofとは異なり、isをinstanceに変更します.
    var a:A=new A();
    
    a instanceof A;    //true
    a instanceof B;    //true
    a instanceof C;    //true
    a instanceof IM;  //false
    a instanceof IN;  //false
    //B、C A   ,IM、IN A     
    
    

    後の2つはfalseで、両者の違いがわかります:isはインタフェースをチェックすることができて、instanceはできませんので、私たちはisを使うべきです
     
    7、as演算子.機能はisと同様に、唯一の違いは戻り値であり、isがtrueを返すと、asはテストのオブジェクトまたは式を返し、isはfalseを返し、asはnullを返す.
    var a:A=new A();
    
    a as A;    //    a
    a as B;    //    a
    a as C;    //    a
    a as IM;  //    a
    a as IN;  //    a
    a as XX;  //  null
    //B、C A   ,IM、IN A     
     
    本文の住所:http://kino.iteye.com/blog/236381、転載は明記してください、ありがとうございます.