メイン コーダーズルーム【スクリプト系】 クラス内の変数について | 投稿するにはまず登録を |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
takiguchi | Åê¹ÆNo.3626 投稿日時: 2004-2-9 21:32 |
半人前 居住地: 東京 投稿: 38
使用環境:
|
Re: クラス内の変数について (2004/2/10 修正)
以前の私の書き込みは、無駄が多くて見難かったため、 無駄を省きました…大掃除です。ついでにおさらいしてみました。 prototype,__proto__については自分が分かる範囲で修正しました。 非常に細かい事だと思いますが、コンパイルでエラーにならない潜在的なバグを 減らしたかったため、言語仕様的な本質についてちゃんと理解しておきたかったから 投稿させて頂きました。色々と教えてくださった野中さん、youichさんには感謝しております。 [おさらい] ■コンフリクト 特に気にする必要なし。 但し、メソッド内でインスタンスメンバを参照する場合は'this'を クラス('static')メンバを参照する場合は'クラス名'をターゲットに指定するようにすると 不慮のスコープミスは防げると思われる。 ■ActionScript 2.0の厳密な型指定 varステートメントによる変数の型指定は、自己申告であって、実際の変数の型はそれと異なる場合もある。 逆に変数の厳密な型指定(自己申告)をしなくても、実際の型というものは存在する。 (超?高級言語の仕様的な部分なのかも) 代入互換(コンパイラでエラーにならない代入)は… ●型指定なし変数 = 何でもOK; ●型指定あり変数 = 型指定なし変数; ●型指定ありA型変数 = A(B型); //無理やり型変換(キャスト) インターフェースの型等 ●型指定ありA型変数 = B型; //A型がB型のスーパークラス ●型指定ありA型変数 = A型; あとは、変数ごとに「専用の箱」が用意される「基本型」と、 一つの箱が用意されて、変数ごとにその箱を開ける「鍵」が渡されるような「参照型」 の違いがあるので注意!(これから勉強) 「参照型」はオブジェクトデータ型とも呼ばれるみたいでArray型とかObject型が それに当たるみたい。たぶん、これらの型はメモリを大量に消費する可能性があるため、 変数ごとに専用の特大な箱を用意してたら、すぐ一杯になっちゃうからだと思う。 ちなみに、引数の型を指定する時は下記のように書いちゃダメ! エラーにならないのはバグかもしれないし、型指定の観点からは無意味です。 --------------------------------------------------------------------- //MyClass2.as class MyClass2 { function method(param1, param2):Void { var param1:String; var param2:Number; trace("param1:"+param1+", param2:"+param2); } } --------------------------------------------------------------------- //MyClass2a.as class MyClass2a { function method(param1:String, param2:Number):Void{ var param1:String=new String(); var param2:Number=new Number(); trace("param1:"+param1+", param2:"+param2); } } --------------------------------------------------------------------- ■オーバーロード(同名の異なるメソッドを定義) 無理! それに近いことをするなら引数の型を指定せずに(もしくはObject型)、 引数を素通りにさせて、メソッド内で条件分岐する。 ■prototype,__proto__ 難しいので、今勉強中! |
フラット表示 | 前のトピック | 次のトピック |
投稿するにはまず登録を | |