пятница, 14 сентября 2012 г.

Python switch

Python switch можно реализовать, несмотря на то, что изначально Python switch не поддерживает.

Данный вараинт switch для Python создан на основе лямбда-функций.
В отличии от традиционных switch записывается он в обратном порядке.

{'case1': function1,
 'case2': function2,
 'case3': function3
}[value]()

Пример реальной работы кода switch для Python:

result = {
  'a': lambda x: x * 5,
  'b': lambda x: x + 7,
  'c': lambda x: x - 2
}[value](x)

А вот для сравнения пример записи switch для PHP:

switch ($value) {
    case 'a':
        $result = $x * 5;
        break;
    case 'b':
        $result = $x + 7;
        break;
    case 'c':
        $result = $x - 2;
        break;
}

Если для работы switch необходим default-параметр, то в это случае код на Python записывается так:

result = {
  'a': lambda x: x * 5,
  'b': lambda x: x + 7,
  'c': lambda x: x - 2
}.get('c', lambda x: x - 22)(23)

Комментариев нет:

Отправить комментарий