Да / Нет.
Нет традиционного языка с оператором "switch".Он существует в так называемом «сопоставлении с образцом».
C #, Java, PHP и Python не поддерживают сопоставление с образцом (не совсем уверен в PHP, но я не верю в это. Поправьте меня, если яЯ ошибаюсь).
Вот пример в Haskell, где сопоставление с образцом действительно существует.Сопоставление с образцом происходит во многих языках функциональных стилей.
function 1 _ = "first parameter has a one"
function _ 1 = "second parameter is a one"
function _ _ = "I don't know what crazy number you passed in"
Когда эта функция вызывается, среда выполнения / компилятор / любой, кто ее проверяет, увидит, можно ли вызвать первую функцию.Если это возможно, он возвращает это значение.Затем он продолжает работать до тех пор, пока не найдет какое-либо совпадение, которое работает для заданных параметров.«_» - это просто способ сказать: «Здесь может быть что угодно, и мне действительно все равно, что это, поэтому не связывайте значение с именем».Если бы я заботился о значении, я мог бы сделать следующее:
function 1 a = "second parameter is " ++ (show a)
Теперь, поскольку оно обычно идет сверху вниз (в отличие от оператора switch), это больше похоже на оператор if / else, чем оператор switch, который простопрыгает в правильное место.Это просто очень красиво выглядит, если / еще.Кроме того, если бы я переупорядочил его так, чтобы самый общий случай был в верхней части файла, другие случаи были бы проигнорированы.
Вы также можете сделать что-то похожее с шаблонами, но это будет работать только во время компиляции.