SRC質問掲示板Mk2
(現在 過去ログ86 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■15853 / inTopicNo.1)  caseの値が重複する場合
  
□投稿者/ EXAM -(2005/01/12(Wed) 14:41:27) [ID:qNmcplWi]
    Switchコマンドで定義した条件式に対してCaseの値が重複する場合、通常は先に定義されたもののみが実行されます
    しかし、条件を満たしたCaseをすべて実行したいという場合、どのようにすると効率がいいでしょうか


     Aの条件を満たした場合→Aのイベント発生
     Bの条件を満たした場合→Bのイベント発生
     A&B両方の条件を満たした場合→A発生後、即B発生
     どちらも満たさない場合→イベント発生せず

    かなり極端な例ですが、こういう処理をしたいと考えています
    シナリオの根底部分を成していて何度も繰り返し利用するため、単純化&軽量化できればと

    Ifなどを用いて、重複した場合の対応を専用処理として作っておく方法もありますが、対応数が膨大になる可能性もあって出来れば避けたいところです(一度に3個4個… と重複する可能性もあるので)
    他に考えられる方法といえば、ループ系のコマンドでSwitch文を複数回走らせて、一度処理した部分を弾くようにするくらいでしょうか

    いい方法があれば、ぜひとも御教示賜りたく
引用返信/返信 削除キー/
■15854 / inTopicNo.2)  Re[1]: caseの値が重複する場合
□投稿者/ TomTom -(2005/01/12(Wed) 14:49:07) [ID:CLm6zLb9]
    TomTomです。

    条件を満たした物全てを実行、ということならば、無理にSwitchを使うよりもIfの方が簡単に出来ます。

    こちらの例だと
    >Aの条件を満たした場合→Aのイベント発生
    >Bの条件を満たした場合→Bのイベント発生
    >A&B両方の条件を満たした場合→A発生後、即B発生
    >どちらも満たさない場合→イベント発生せず

     If 条件A Then
      〜Aの処理〜
     EndIf
     If 条件B Then
      〜Bの処理〜
     EndIf

    これだけです。
    要するに、一個一個If〜EndIfを指定してやればいいだけですね。

    詰まったときは難しく考えず、かる〜く考えてみるのも手です。
引用返信/返信 削除キー/
■15855 / inTopicNo.3)  Re[2]: caseの値が重複する場合
□投稿者/ EXAM -(2005/01/12(Wed) 15:44:04) [ID:qNmcplWi]
    回答ありがとうございます
    が、ちょっとばかり説明が足りない部分があったようです

    > 条件を満たした物全てを実行、ということならば、無理にSwitchを使うよりもIfの方が簡単に出来ます。

    ええ、確かに… Ifの方が簡単だろうというのは承知しています

    > こちらの例だと
    > >Aの条件を満たした場合→Aのイベント発生
    > >Bの条件を満たした場合→Bのイベント発生
    > >A&B両方の条件を満たした場合→A発生後、即B発生
    > >どちらも満たさない場合→イベント発生せず
    >
    >  If 条件A Then
    >   〜Aの処理〜
    >  EndIf
    >  If 条件B Then
    >   〜Bの処理〜
    >  EndIf
    >
    > これだけです。
    > 要するに、一個一個If〜EndIfを指定してやればいいだけですね。

    こうすると、Aの処理が完了した段階でBの条件に関する変数が変更された場合に、こちらの予定していた作用を起こさない可能性があるという危惧がありまして
    処理前に、すべての条件に対して発動するか否かを調べれば可能ですけど

    あと「Ifだとイベントの追加が非常に面倒だ」という個人的な理由もありますが

    > 詰まったときは難しく考えず、かる〜く考えてみるのも手です。

    かる〜く考えてみた結果、今ひとつこれといった案も思い浮かばなかったので、この処理の製作は後回しにしたいと思います
    他の部分が終わって、またこの部分の製作に入った際、もう一度ここに来るかもしれません
    一応、解決済みにしておきます
    ありがとうございました
解決済み!
引用返信/返信 削除キー/
■15856 / inTopicNo.4)  Re[3]: caseの値が重複する場合
□投稿者/ TomTom -(2005/01/12(Wed) 16:14:11) [ID:CLm6zLb9]
    えーと、解決済みになってしまいましたが。

    そもそも、Swicth〜Caseにおいて複数の条件がヒットする、という処理自体が間違っており、それ以外の条件分岐はIfしかないわけです。
    どうしてもSwitchで処理をしたければ、

     Switch 判定式
      Case Aの条件
       〜Aの処理〜
     EndSw
     Switch 判定式
      Case Bの条件
       〜Bの処理〜
     EndSw

    としてゆくしかありません。条件によっては、Ifよりもこちらのほうが単純に処理できるかもしれませんが。
    #「ループでSwitchを複数回走らせて、一度実行したものは弾く」
    #といったことを最初の書き込みに書かれていますが、
    #弾く処理をしようが結局は最初のCaseにしか引っかからないことには変わりはありません。


    EXAMさんご自身も言われているように、If(場合によってはSwitch)の前に条件判定を全て済ませ、
    その結果にしたがって、個別に処理を立てるのが一番スマートかと思われます。


    また、「Ifだとイベントの追加が非常に面倒だ」とのことですが、具体的にどのような条件式を想定されているのでしょうか。
    他の処理が終わってまたここで詰まった場合、その内容を伝えていただければ、簡単にイベントを追加する方法があるかもしれません。
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -