HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1126
if6解決


リンク

2008/11/26(Wed) 16:45:21|NO.21051

a=5
if (a=2)|(a=5)|(a=6)|(a=8)|(a=18):end

aが2・5・6・8・18のどれかだと終了する
このif文を

if a=(2|5|6|8|18):end
こんな感じに、短くかきたいのですが
これだと無理なんですよ

他の書きかたがあれば教えてください



この記事に返信する


レノス

リンク

2008/11/26(Wed) 17:25:41|NO.21052

無意味に配列変数を一つ使いますが。。。↓


#module #defcfunc isEqual int target, array comp bEqual = 0 foreach comp if ( target == comp(cnt) ) { bEqual = 1 : break } loop return bEqual #global // ↑を、スクリプトの前の方に置いておくか、 // 別のファイルにして include する。 a = 5 comp = 2, 5, 6, 8, 18 // 比較する数値を配列に代入 if ( isEqual(a, comp) ) { mes "終了" } stop

# ミスったので一度削除



たこ

リンク

2008/11/26(Wed) 17:31:25|NO.21053

解決策になるかは分からないけど、こんなのは?


#define ctype check_a(%1)\ ((%1=2)|(%1=5)|(%1=6)|(%1=8)|(%1=18)) a = 4 if check_a(a) { dialog "COME" } else { dialog "END" } end



SYAM

リンク

2008/11/26(Wed) 17:38:29|NO.21054

普通のと変なの2つ挙げます
数値変数 a の内容を判定します。
普通の

e=2,5,6,8,18 repeat 5:if a=e(cnt):end loop
変なの

e="2,5,6,8,18":if(instr(e,0,str(a))>=0):end



リンク

2008/11/27(Thu) 01:26:15|NO.21063

皆さん色んな方法をありがとうございます、どうやら短くかくのは難しいようですね
>e="2,5,6,8,18":if(instr(e,0,str(a))>=0):end
これは意外な方法でw



s

リンク

2008/11/28(Fri) 00:43:10|NO.21090

>e="2,5,6,8,18":if(instr(e,0,str(a))>=0):end
これa=1だとまずいですよねww
まあSYAMさんのことだからわかってらっしゃると思いますがw

こうすれば多分平気

e="2,5,6,8,18,":if(instr(e,0,str(a)+",")>=0):end



SYAM

リンク

2008/11/28(Fri) 01:00:58|NO.21091

あ。気付いてなかった。訂正ありがとです。
そうか。検出対象に終端つけないといかんわな…。



ONION software Copyright 1997-2023(c) All rights reserved.