« flash製MMO RPG、 Dofus | main | 近況報告 »
2005年09月06日
ActionScriptで関数のオーバーロードを実装する
勉強の為にAs2Libを読んでて見つけたのですが、actionScriptで関数のオーバーロードを実現するフレームワークなんて存在するんですね。ビックリビックリ。しかもこれ、そのままJavaScriptに移植できるわ。
オーバーロードというのは、1つの関数を
function hoge( val1:String ){}
funcition hoge( val1:Number){}
funcition hoge( val1:Object, val2:Object){}
というように、いくつもの引数のスタイルで、渡されたパラメータによって実行する関数を変更するという機能です。Javaとかではお馴染みでスゴイ便利なんだけど、ASやJSでは元々実装されてないのです。
が、なんとAs2Libフレームワークの、org.as2lib.env.overload.Overloadクラスを使えば、ActionScriptでもオーバーロードができちゃうらしいのです。
org.as2lib.env.overload.Overloadfunction hoge(){
var o:Overload = new Overload(this);
//overloadで使う処理を登録。
o.addHandler([String], hogeType1);
o.addHandler([Number], hogeType2);
o.addHandler([Object, Object], hogeType3);
return o.foward(arguments);
}private function hogeType1(str:String){
}private function hogeType2(num:Number){
}private function hogeType3(obj:Object, obj:Object){
}
こんな感じ。
どうやらOverloadクラスは、関数hoge内でプロキシとなって、適切な型のprivate関数に呼び出しを委譲するみたい。
ただし、あくまでオーバーロードの擬似実装だから、いくつか欠点もあります。
- 複数のオーバーロードの戻り値が異なる場合は、型指定をObject型にしかできない
- コンパイル時に型チェックが行われない(実行時に例外を吐くように設計されてる)
- 実行速度が微妙に落ちる
これは超便利っぽい。As2Libは強固な分だけコンパイル時間がガタ落ちするので、自分ライブラリにも同じAPIでこういうの実装してもいいかもしんない。
しっかし、コリン・ムークとかサイモン・ワッカーとかGスキナーとかって人達は頭よすぎるね。何食べたらあんなふうになれるんだろう。
投稿者 Taka : 2005年09月06日 07:54
book
bookmark
trackbacks
this entry's trackback URL:
http://www.fladdict.net/cgi-bin/mt3/mt-tb.cgi/298
このリストは、次のエントリーを参照しています: ActionScriptで関数のオーバーロードを実装する:
» http://emergencycashadvance-uFPI.blogspot.com from http://emergencycashadvance-uFPI.blogspot.com
http://creditmortgagepoorsecond-dvIp.blogspot.com [read more]
トラックバック時刻: 2006年03月04日 18:06
» Pizza Review from Pizza Review
Pizza Review [read more]
トラックバック時刻: 2006年03月17日 07:34
» live cricket from cricket scores
live cricket [read more]
トラックバック時刻: 2006年03月21日 18:55
» accident lawyer from lawyer information
accident lawyer [read more]
トラックバック時刻: 2006年03月28日 02:29
comment
As2libボクも何箇所か除いてみました.
http://blog.graffiti-web.org/archives/2005/06/touching_as2lib.html
reflectionパッケージ
loggingパッケージ
eventパッケージのdistibutor
この辺の実装が面白かった記憶があります.
もう忘れちゃいましたが…(汗
by nao : 2005年09月07日 02:23
lose do forecast - that is all that game is capable of: http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-51398 , international, white, faithful nothing comparative to beautiful
by Patrick Wilson : 2006年03月28日 12:13