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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1226
秋柊switchについての質問です。3解決


秋柊

リンク

2013/12/26(Thu) 23:49:56|NO.58898


a = 0 switch a case "AA" mes "aa" swbreak case "BB" mes "bb" swbreak swend stop

実行結果:aa


何故このような結果になるのか教えてください。


switch a case 0 swbreak case "AA" ・ ・ ・

とすれば、一応期待した通りの結果になるような気がしますが、
大元の理解が欠けているので確実な方法なのか不安です。
正しいやり方も合わせて教えて頂ければ幸いです。
よろしくお願いします。



この記事に返信する


暇人

リンク

2013/12/27(Fri) 00:08:41|NO.58899

switchはマクロで組まれていて

switch a
case "AA"
mes "aa"

は実行時に

_switch_val= a if _switch_val == ("AA") { mes "aa"}
みたいに展開される
int型変数と文字列型だと比較できないので
文字列を左側の比較元に合わせようと数値にする
int("AA")みたいな事が起きて
結果"AA"は0になるので_switch_val == ("AA")は_switch_val == 0で
aが0なら同じと判断される



秋柊

リンク

2013/12/27(Fri) 00:31:29|NO.58900

switchは文字列型だと比較できないんですね。
ifを使う事にします。
ありがとうございました。



暇人

リンク

2013/12/27(Fri) 00:54:50|NO.58901

>switchは文字列型だと比較できないんですね。
そうじゃなく・・・
文字列型とint型の直接の比較は出来ない
比較する前に左側の比較元の方に合わせようとする


a = 0 switch str(a) case "AA" mes "aa" swbreak case "BB" mes "bb" swbreak swend stop
比較元を文字列にすれば問題ない



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