どうやら、Abode Labs.の方で早くもActionScript4.1の仕様が公開されてるようなので、軽く読んでみました。具体的な変更点は以下のような感じ。
関数のオーバーロードのサポート
Javaなんかと同じように、関数のオーバーロードができるようになるとのこと。単純に、同名のメソッドを引数の型を変えて書けばOKです。
public function a(p:String):void
{
// ...
}
public function a(p:XML):void
{
// ...
}
互換性のために、デフォルト値の指定は残すそうです。
ジェネリックのサポート
JavaやC#では御馴染みのジェネリックがサポートされるそうです。AVMもジェネリックを解釈するので、配列の操作等が早くなるとのこと。
ジェネリックな配列の使用は次のような感じ。型指定が増えてますね。
var list:Array:String = new Array:String();
list.push("hoge");
list.push(new Fuga()); // Stringではないのでコンパイルエラー
宣言は次のような感じ。
// ジェネリックなクラス
public class Holder:T
{
private var value:T;
public function setValue(v:T):void
{
value = v;
}
public function getValue():T
{
return value;
}
}
// ジェネリックなメソッド
public function hoge:T(param:T):T
{
fuga(param);
return param;
}
// ふたつ以上ジェネリック
public class Hoge:(T, U)
{
// ...
}
// 特定のクラスから派生
public class Hoge:(* extends Error)
{
}
コレクションのサポート
ジェネリックのサポートにあわせて、配列の他にJavaのようなコレクションも多数追加されるようです。今の所以下のようなクラスが挙げられています。
- Array:E
- Dictionary:(K, V)
- HashMap:(K, V)
- HashSet:E
- Hashtable:(K, V)
- LinkedHashMap:(K, V)
- LinkedHashSet:E
- LinkedList:E
- PrioprityQueue:E
- Stack:E
- TreeMap:(K, V)
- TreeSet:E
- Vector:E
- WeakHashMap:(K, V)
Pragmaのサポート
ECMAScript4の仕様書にあったヤツですね。CとかC++では御馴染み。次のような感じで、コンパイラの動作を変えることが出来るようです。
public class Hoge
{
strict {
// ここはStrictモード
}
strict(false) {
// ここはStrictじゃない
}
disable(3597) {
// 変数重複警告を無視
}
}
ユーザー独自のスイッチも可能みたいです。
public class Hoge
{
debug {
// debug用コード
}
}
とやって、コンパイラオプションで
-compiler.pragma debug true
てな感じで指定。
Javaと同等のリフレクション機能のサポート
どうやらAbodeの中の人もAS3のリフレクション機能については反省してるようで、4.1からはJavaと同程度の機能を備えたリフレクションをサポートするとのこと。
クラスのnewもFunction.applyと同じように出来るようになるみたいです。
RealProxyのサポート
AS3では色々と制限が多くてあまり使い物にならなかったProxyですが、4.1では.NETのRealProxyのように透過的に扱えるようになるとのこと。また、Proxyクラスを継承しなくて良くなるそうです。
Socketのlistenのサポート
AS3では、Socketは接続するのみでしたが、待ちうけ(Socket#listen)が出来るようになるとのこと。これで、サーバーを介さずにFlashだけでチャットなどのP2Pアプリを作る事が可能に。
evalのサポート
遂に来ました。Flex SDKがフリーで公開されてる今、evalをサポートしない理由がありませんもんね。JavaScriptなどと同じようにevalできるようになるそうです。
ついでに、.NETやJavaSE6のように、コンパイラを直接扱うためのライブラリも追加されるとのこと。
いやいや、素晴らしいですね。ホントにこんなことがあったら素晴らしいですね。あるわけないですね。4月1日ですもんね。
ジェネリックの部分は、ちょっとECMAScriptっぽい文法にこだわってみました。他にも描画とサウンド周りのFlashPlayerAPIについても書こうと思ったりもしましたが、止まらなくなりそうなので止めました。
サイト内関連記事
この記事へのトラックバック
TrackBack URL:
http://www.be-interactive.org/trackback.php?id=212

そうですね。5(AVM4)あたりでのサポートを予定しているそうです。
>通りすがりさん
ヽ(´ー`)ノ
ところで、yossyさんは埼玉のどの辺に住んでるの?
さいたま市だったら、お目にかかれるチャンスがあるかも
エントリでは、Adobe LabsではなくAbode Labsです。
残念ながらさいたま市ではないですねー。