Top/Tips/caseを使って条件分岐で手抜きをする
  トップページへ   [ 一覧 | 検索 | 最終更新 ]   [ 差分 | 履歴 ]

*caseを使って条件分岐で手抜きをする [#gc393e57]

条件分岐のとき、if〜else if〜elseだと、何度も同じ条件を書かねばならず、面倒なことがあります。~
そこで、case〜when〜othersを使って手抜きをしてしまいましょう。
条件分岐のとき、if~else if~elseだと、何度も同じ条件を書かねばならず、面倒なことがあります。~
そこで、case~when~othersを使って手抜きをしてしまいましょう。

ゴースト切り替えイベントの例。~
whenに続けてゴースト名を書き、{}の中にトークを書きます。

***他のゴーストへ切り替え [#l751e388]

 OnGhostChanging_normal
 {
    _NOWDATE      = "%(year),%(month),%(day),%(hour),%(minute),%(second)"
    CloseTime     = _NOWDATE
 
    _ghostname = reference0
    if reference2 != "" {
       _ghostname = reference2
    }
 
    case reference0 {
       when "タケシ" {
          "\1\s[10]\0\s[0]再起動かな?\w9\1さぁ?\w9\e"
          "\1\s[10]\0\s[0]再起動するぞ。\w9\e"
       }
 
       when "コノハ" {
          "\1\s[10]\0\s[5]\_s名古屋開始。\w9\e"
       }
 
       when "所長たん" {
          "\1\s[10]\0\s[4]あ〜、できればこのプログラムのデバッグ、お願いできませんか?\w9\1無茶言うな。\w9\e"
          "\1\s[10]\0\s[4]あ~、できればこのプログラムのデバッグ、お願いできませんか?\w9\1無茶言うな。\w9\e"
       }
 
       when "あさたろう" {
          "\1\s[10]\0\s[5]同じSEなのに、あっちは気楽そうでいいよな。\w9\1転職するか?\w9\e"
       }
 
       others {
          "\0\s[0]\1\s[10]%(_ghostname)へ交代か。\w9\0\s[5]%(reference0)、後はよろしく頼むぜ。\w9\e"
       }
    }
 }

***他のゴーストから切り替り [#v55e17c4]

 OnGhostChanged_normal
 {
    _StartUpTimeBack = StartUpTime
    StartUpTime      = "%(year),%(month),%(day),%(hour),%(minute),%(second)"
 
    _ghostname = reference0
    if reference2 != "" {
       _ghostname = reference2
    }
 
    case reference0 {
       when "タケシ" {
          StartUpTime = _StartUpTimeBack
          "\1\s[10]\0\s[0]再起動完了。\e"
       }
 
       when "所長たん" {
          "\1\s[10]\0\s[4]所長たんみたいにのびのびプログラムができればなぁ。\w9\1サラリーマンはそうは行かないからな。\e"
       }
 
       when "あさたろう" {
          "\1\s[10]\0\s[4]同じSEなのに、この格差はなんなんだろう‥‥‥‥\w9\1考えるな、考えたら負けだ。\w9たぶん。\e"
       }
 
       others {
          "\0\s[0]\1\s[10]%(_ghostname)から切り替わったぞ。\w9\0\s[5]%(reference0)、お疲れさん。\e"
       }
    }
 }

***複数条件の列挙 [#t1d869b9]

whenは、カンマで区切ることで複数条件を列挙できます。~
これを利用して月から季節を取得する関数などが書けます。

 GetSeasonSlot
 {
    case month {
       when 3,4,5 {
          "春"
       }
 
       when 6,7,8 {
          "夏"
       }
 
       when 9,10,11 {
          "秋"
       }
 
       when 12,1,2 {
          "冬"
       }
    }
 }

***数値が連続する時の略記法 [#z9dc242d]

数値が連続する場合、以下のような書き方も可能です。

 GetSeasonSlot
 {
    case month {
       when 3-5 {
          "春"
       }
 
       when 6-8 {
          "夏"
       }
 
       when 9-11 {
          "秋"
       }
 
       when 12,1,2 {
          "冬"
       }
    }
 }