AS3でArrayとVectorの初期化
複数の言語使ってると配列の初期化っていつも忘れます。
AS3の配列はArrayとVectorがありますが、初期化はそれぞれ以下のようになります。
var v:Vector.<int> = new <int>[1,2,3];
var v:Vector.<int> = Vector.<int>([1,2,3]);
var v:Vector.<int> = Vector.<int>(10); //長さ10の配列
var a:Array = [1,2,3];
var a:Array = new Array(1,2,3);
var a:Array = new Array(10); //長さ10の配列
Arrayは割と素直なんですけど、Vectorの文法がすんなり入ってこないです。
検索すればすぐわかるのに、こんなん適当に書いてれば当たるだろうと思って、推測で書いては実行してみてってことをしてたら意外に苦戦してしまいました。
以下オマケの実験結果です。
ArrayとVectorのasキャストは無理です。
var a:Array = (new <int>[1,2,3]) as Array;//->null
var v:Vector.<int> = [1, 2, 3] as Vector.<int>;//->null
以下はコンパイル時エラーです。すぐ検出できるのでありがたいです。
//Incorrect number of arguments. Expected no more than 1.
var a:Array = Array(1,2,3);
//Implicit coercion of a value of type Array to an unrelated type __AS3__.vec:Vector.<int>.
var v:Vector.<int> = [1, 2, 3];
以下は実行時エラーです。
//コンストラクター以外にインスタンス化が試行されました。
var a:Array = new [1, 2, 3];
//Vector.<int>$cinit() の引数の数が一致していません。0 が必要ですが、5 が指定されました。
var v:Vector.<int> = new Vector.<int>(1,2,3);
//クラスの型変換に指定された引数の数が不正です。1 個必要ですが、5 個指定されました。
var v:Vector.<int> = Vector.<int>(1,2,3);
//Number にプロパティ 5 が見つからず、デフォルト値もありません。
var v:Vector.<int> = new Vector.<int>[1, 2, 3];
以下は動作しますが、意図した動作ではないかもしれません。
var a:Array = Array([1, 2, 3]);//a[0]に配列が格納。2次元配列
var v:Vector.<int> = new Vector.<int>([1, 2, 3]);//何も起こらない。長さ0の空配列・・・
Author And Source
この問題について(AS3でArrayとVectorの初期化), 我々は、より多くの情報をここで見つけました https://qiita.com/asobot/items/1b835c8aa59849f7f02a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .