メイン コーダーズルーム【スクリプト系】 Object型のプロパティに変数を使いたい | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tnagata | Åê¹ÆNo.29420 投稿日時: 2006-10-18 10:10 |
常連 居住地: 投稿: 140
使用環境:
Flex2,, Flash5 OS:Windows 2000 SP4,,WindowsVista IE5,6,7 |
Object型のプロパティに変数を使いたい いつもお世話になっております。
よく使っている手法なんですが
という形で配列内にObject型を仕込んでおいて
等という具合に、Nameに割り当てた識別子を元に 値を返す・・・という処理を書いていたのですが Object型になっている部分のプロパティ名が 変わるたびにgetValueの別パターンをいくつも作らないといけなかったので
としました。 まぁ、これである程度満足したのですが 気持ちとしては ドットシンタックスで書きたいなぁと思っていまして eval("ary[" + i + "]."+ strID) のような参照をしてみたのですが、undefinedしか返ってこないので ary[][]というような書き方しかないのかなぁと思っています。 他に書き方はないでしょうか? ご存知の方いらっしゃれば、教えてください。 宜しくお願いします。 |
野中文雄 | Åê¹ÆNo.29422 投稿日時: 2006-10-18 13:50 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: Object型のプロパティに変数を使いたい とくに配列の値取出しを、配列アクセス演算子[]でなく「ドットシンタックスで書きたい」理由がわかりません。あえてお勧めする手法ではないです。
引用: tnagataさんは書きました: ターゲットのフィールド(プロパティ)が頻繁に変わるものでないなら、インデックスをかけておく方法も考えられます。インデックス化したオブジェクトには、ドットアクセスが使えます。
|
tnagata | Åê¹ÆNo.29423 投稿日時: 2006-10-18 15:11 |
常連 居住地: 投稿: 140
使用環境:
Flex2,, Flash5 OS:Windows 2000 SP4,,WindowsVista IE5,6,7 |
Re: Object型のプロパティに変数を使いたい 別例まで作成していただきありがとうございました。
なんか、ものすっごい手が込んでいますね^^; 引用:
すみません、意味不明でしたね。 配列部分は、配列アクセス演算子[]、 フィールド部分はドットシンタックスというような書き分けを ソースコードの中でやっていたのものですから この関数のなかだけ、配列アクセス演算子[]だけで表記するのは嫌だな?と感じただけなのです。 つまり、今までソースコードの中では ary[i].Nameのように記述していたので、他とあわせる意味では 似たような書式にしたいなぁと考えました。 eval("ary["+i+"]." + strID) だと、アクセス出来なかったので、どうしたものかと書き換えていたら ary[i][strID]で動いたわけです。 う?む。これだと二次元配列みたいな書式で嫌だな?とか考えましたので、お尋ねしたのが経緯です。 eval("ary." + i + "." + strID) のように、ドットシンタックスだけなら、いけるんですね! こう書けるという事は、配列アクセス演算子はシンタックスシュガーであって、実際はオブジェクト型の継承で、他の言語等の配列を模して作られた事が伺えますね。 #アレ?なんだろ、デジャヴかな、前もこんな事書いたような気がする・・・ それは、さておき、eval()の中だと「混ぜるとキケン!」もとい、ドットシンタックスと配列アクセス演算子をあわせて使うと動かないんですね。 勉強になりました。ありがとうございました。 |
野中文雄 | Åê¹ÆNo.29425 投稿日時: 2006-10-18 15:38 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: Object型のプロパティに変数を使いたい 配列は、整数インデックスをエレメントのプロパティとする特別なObject(のサブクラス)です。Objectを連想配列と呼ぶ人(こと)もありますので、その表現にしたがえば件の配列は「二次元配列」と考えることもできます。
obj_array[0] -> {Value:1, Name:"aaa"} obj_array[0]["Value"] -> 1 [変数のリストアップ]より引用: 変数 _level0.obj_array = [オブジェクト #3, クラス 'Array'] [ 引用: tnagataさんは書きました: 一般に、ドットアクセスは、配列アクセスで書替えることが可能です。 参考:「ドット演算子と配列アクセス演算子」 なお、ActionScript 3.0では、eval()関数は使えなくなります。 |
tnagata | Åê¹ÆNo.29429 投稿日時: 2006-10-18 16:30 |
常連 居住地: 投稿: 140
使用環境:
Flex2,, Flash5 OS:Windows 2000 SP4,,WindowsVista IE5,6,7 |
Re: Object型のプロパティに変数を使いたい 連想配列は、結構いい訳ですね。
わかりやすいです。 (感想そこかよ!というツッコミは無しでlol) 引用:
は、とても分かりやすい説明でした。特にドット演算子については、すごく整理されていて分かりやすかったです。 ありがとうございました。 引用:
これは、強烈です。 3.0を利用する事は、今のところ考えていないのですが Flashの特徴でインパクトがあったのは 先ほどの連想配列等に代表されるような 変数名すら変数に出来るという事だと思っていました。 特にeval()は、最たる物だと思っていたので、驚きました。 ただ、使っていて思うのは、あまり変数名まで変数にしちゃうとプログラム分かりにくくならないかな(可読性という意味で)?と思うので、失くすのは賛成でもあり、 使ってて便利なので(コードの汎用性をアップする事ができるので)反対でもありと、、、複雑な気分です。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |