http://hsp.tv/play/pforum.php?mode=all&num=88182
を受けて
HSPで&&を論理演算子として使おうとすると
たまに意図通りに動きません
たぶんAndroidでもWindowsでも
意図通りに動かないと思います
引用スレはAndroidだと意図通り動かないことがあるという
報告でしたので
&&の気をつける点としての資料として
ググってひっかかるように
スレを立て直してみました
具体的にどういう点かというと
はOKと表示しません
if 2 && 1{ mes "OK }
ビット演算だからです
しかし、
はOKと表示します
if 2 { if 1 { mes "OK" } }
if ブレースはビット演算ではないからです
問題はネストが深くなってわかりにくくなることと
elseをどこにつければいいかよくわかんないことです
ちなみに僕がHSP初心者の頃は
条件式を正しく書けているかわかんなくなって
if ブレースを論理&&っぽく使ってました
たぶん数年前、ビット演算なので
上手く動かなかったんだと気付いたのですが
自分は理解したからいいかなと
特にアウトプットしませんでした
そういう意味でちょっと自省を込めて書いております
僕だけじゃなく、知っている人も多かったでしょうに
陰険ですなw
ちなみに-1はtrueなので
はOKと表示されます
s="z" ss="abc" if instr(ss,0,s){ mes "OK" }
エラー値がifに渡される場面も結構ありそうなんすけどね
0がnullならそれと違うnilが欲しかったりもします
論理orはビットが違っても大丈夫なので
はOKと表示されます
if 1 || 2 { mes "OK" }
HSP3は後方交換性が魅力なので
今更、&はビット演算、&&は論理演算とかにすると
動かなくなるプログラムも多々ありそうであり
主に色々サイトに載ってるサンプルスクリプトとか
なので&&&を論理ANDにするとかどうでしょうか
仕様とか報告する場とかどっかにあるといいんですけどね
各サイトに散らばってても把握しにくいでしょうし
こうやって公式BBSに書くのはいいかもしれませんね
公式BBSってググったらいっぱいひっかかりますし