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

パスワード:


パスワード紛失

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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sarasou
Åê¹ÆNo.38189
投稿日時: 2008-3-23 16:32
新米
居住地:
投稿: 24
使用環境:
WinXP Home SP2
Flash8
複数数値のor指定
かなり初歩的なことですが、どこにも載ってなかったので……

例えばaという変数があったとして、この中に格納されている数値によって条件分岐させるとします。

if (a==1) {
functionA();
} else if (a==2) {
functionB();
}

ここで、aの中に1か3が入ってた場合にfunctionAを実行させたい場合、

if (a==1 or a==3) {

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

試しに
if (a==(1|3)) {
などとやってみましたが上手く行きません。
どのような書式で指定すれば良いのでしょうか。

ご教授願います。
野中文雄
Åê¹ÆNo.38190
投稿日時: 2008-3-23 21:35
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
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)の評価は行われませんので、その点はむしろ効率が高いといえます。


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

sarasou
Åê¹ÆNo.38246
投稿日時: 2008-3-28 9:50
新米
居住地:
投稿: 24
使用環境:
WinXP Home SP2
Flash8
Re: 複数数値のor指定
質問の意図はご解釈の通りです。他にどのように書けば良かったのでしょうか。
他の言語では=~等を使って出来たので、ActionScriptでも出来るかな、と思ったのですが、出来ないようですね……。
functionを用いるのは使えそうなので、試してみます。
ありがとうございました。
野中文雄
Åê¹ÆNo.38251
投稿日時: 2008-3-28 21:54
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 複数数値のor指定
解釈は3つ示したつもりです。第1だったということでしょうか。未だにわかりかねます...それが明確になる「ように書けば良かった」ということです。
引用:
sarasouさんは書きました:
質問の意図はご解釈の通りです。他にどのように書けば良かったのでしょうか。
他の言語では=~等を使って出来たので、ActionScriptでも出来るかな、と思ったのですが、出来ないようですね……。


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

とんび
Åê¹ÆNo.38252
投稿日時: 2008-3-28 23:46
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: 複数数値のor指定
 他の言語というのは、具体的にはどの言語なんでしょうか。
 一つ具体的な例を書かれると、多少は質問の意図が通じやすくなるかと思います。

 この質問自体は、私がそういう言語を思いつかなかったので、興味で聞いてるんですけど


----------------
鳶嶋工房

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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