投稿者 GH 日時 2000 年 9 月 06 日 12:14:25: [DG-001894]
回答先: Re: おぉ、納得! 投稿者 ギ・コ・キャラット 日時 2000 年 9 月 06 日 10:37:39
> わかりやすい例、ありがとうございますm(_ _)m なるほど・・・ 今のBASICだと
> Select Case(Cでいうswitch)でネストを掘り下げずに処理できますが、処理速度
> を考えると配列の方が速そうですね・・・ ちなみにBASICの=は1つです。
今のBASICではどうかわかりませんが、Cのswitch文での式評価の順番は保証されていなかったと思います。つまり、上から順にcaseを評価していくとは限りません。このため、if文を羅列した方が速くなる可能性もあります。
ソースの見やすさと速度のトレードオフでしょう。実際、わざわざif文で処理する場合もあります。
if (x == 1) {
....
} else {
switch (x) {
case 2:...
break;
case 3:...
break;
}
}
というようにすることもあります。これは1が圧倒的に多い場合ですね。
> (BASIC使いがCとかPerlやると、大抵これでシンタックスエラー出たり)
そうですね。BASICをしばらく書いていないと、if文とかfor文とか書けなくなっちゃいます(笑)。
> GHさん、レスありがとうございましたm(_ _)m つーか、このレスはちゃんと投稿
> されるのであろうか・・・?
わざわざどうも。ちゃんと投稿されてますよ。
しかし、タブが入らんがな・・・。
お礼を頂いたので、気をよくしてもう1つ例を考えてみました。
if x = 1 then gosub label1
if x = 2 then gosub label2
if x = 3 then gosub label3
if x = 4 then gosub label4
という処理を、
on x gosub label1 label2 label3 label4
とすることで、ジャンプテーブルに変換できます。あ、誰かかいていたかも。
それと、on〜の書き方間違ってるかも。ラベルに,って必要だった?