Switch

switch.png

Pythonにはswitchはない

代わりに何を使えばいいのか???
「if-elif-else」で書くか「辞書」で代用しましょう

  """dict での複数条件分岐"""
        key = 'a'
 
        def key_a(key):
            print 'a'
            self.assertEqual('a', key)
 
        def key_b(key):
            print 'b'
            self.assertEqual('b', key)
 
        def key_other(key):
            print 'other'
            self.assertNotIn(('a', 'b'), (key,))
 
        key_dict = {
            'a': key_a,
            'b': key_b
        }

switch文を他の物で代用する

switch分をポリモーフィズムに置き換える

switchで分岐している部分を、仮想関数による分岐に変更する。

状態遷移にswitch文を使ってる場合はSlateパターンに置き換える

caseで各状態に分岐している場合は、
各状態を一つにまとめる抽象インタフェースを用意して、
状態の種類ごとにクラス化して実装します。

switch文の方が適している場合

  • 扱う状態が少ない
  • 各状態の処理が1行程度で済む単純なものの場合

switchに関するエラー

○○の初期化 ○○ラベルによって行われませんでした

これはcase文内を{}で囲うと消えてくれます

サポートサイト Wikidot.com