トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     複数数値のor指定
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
Fumio
Åê¹ÆNo.38190
投稿日時: 2008-3-23 21:35
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
Re: 複数数値のor指定
ご質問の意図が、よくわかりません。
引用:
sarasouさんは書きました:
ここで、aの中に1か3が入ってた場合にfunctionAを実行させたい場合、
// if (a==1 or a==3) {
if (a==1 || a==3) {  // Flash Player 5以降の場合

と書けば望む動作が得られますが、
(1|3)のようにまとめて書くことは出来ませんでしょうか。

第1に、演算子はひとつでひとつの処理を行います。等価演算子==ひとつでふたつの値と比較しようというのは、天秤を1回だけ使って2つの分銅の重さと比べようというのと同じで、不可能です。
引用:
試しに
if (a==(1|3)) {
などとやってみましたが上手く行きません。

第2に、他に処理の記述の仕方がないかという問いでしたら、考えられないことはありません。条件の数が多いとか、同じような判別を大量に行うなどの場合であれば、処理方法を検討する余地はあります。しかし、ふたつの値と演算するという本質は変わりません。

[1]
if (!((a-1)*(a-3))) {

[2]
switch (a) {
case 1 :
case 3 :
	// 処理
	break;
}

[3]
if (xIsEqual(a, [1, 3])) {
	// 処理
}
function xIsEqual(n:Number, comparison_array:Array):Boolean {
	for (var i:Number = 0; i<comparison_array.length; i++) {
		if (n == comparison_array[i]) {
			return true;
		}
	}
	return false;
}

第3に、単に短く記述したいという場合には、タイプの手間が減るという点で生産性は多少上がるとはいえ、処理効率には直接結びつかないことに注意が必要です。

たとえば、前記[1]は記述は短いものの([追記]スペースを除いた文字数は、むしろ論理和演算子!!を使った方が少ないですね)、ふたつの値との演算が必ず行われます。元の論理和演算子||を使った場合なら、最初の条件(a == 1)でtrueが返されれば、後の条件(a == 3)の評価は行われませんので、その点はむしろ効率が高いといえます。


----------------
 

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   複数数値のor指定 sarasou 2008-3-23 16:32
   » Re: 複数数値のor指定 Fumio 2008-3-23 21:35
       Re: 複数数値のor指定 sarasou 2008-3-28 9:50
         Re: 複数数値のor指定 Fumio 2008-3-28 21:54
         Re: 複数数値のor指定 tonbi 2008-3-28 23:46

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops