WedX - журнал о программировании и компьютерных науках

Оператор Ruby Case против оператора Switch Javascript

Я только что изучил оператор Switch в Javascript и подумал, что он работает так же, как оператор Case в Ruby. Однако это немного отличается, и я не понимаю, почему оператор Switch будет продолжать печатать остальные строки. См. сравнительный пример ниже:

    option = 2
    case option
    when 1 
      print "You selected option 1."
    when 2
      print "You selected option 2."
    when 3
      print "You selected option 3."
    when 4
      print "You selected option 4."
    end

Приведенный выше оператор case в Ruby будет распечатывать только: You selected option 2.

Однако, когда он переводится в оператор Switch Javascript:

    var option = 2
    switch (option) {
      case 1:
        console.log("You selected option 1.");
      case 2:
        console.log("You selected option 2.");
      case 3:
        console.log("You selected option 3.");
      case 4:
        console.log("You selected option 4.");
    }

Приведенный выше оператор Switch будет печатать

    You selected option 2.
    You selected option 3.
    You selected option 4.

Мне придется ставить break после каждого случая в операторе Switch, чтобы он работал.

Может кто-нибудь объяснить, почему и есть ли более простой способ или метод сделать это в Javascript?


  • Вам нужно будет добавить break после каждого случая. Так устроен язык. Наряду с Java, C, PHP и почти всеми языками под солнцем. 28.07.2017
  • @JoeFrambach: почти все языки под солнцем. В то время как остальная часть комментария совершенно по делу, это заведомо ложно. Это просто семейство языков, чей синтаксис сильно вдохновлен C. Например, Lisp, Elixir, Pascal, Modula 2, Perl, Fortran и многие другие используют тот же подход, что и Ruby. 28.07.2017

Ответы:


1

JavaScript следует традиции C, требуя явного break для выхода из switch. C++ и Java в этом отношении одинаковы, как и (я уверен) бесчисленное множество других производных C.

Чтобы выйти из case:

switch (something) {
  case value:
    console.log("whatever");
    break;
  case other:
    console.log("other");
    break;
}

Без break выполнение «проваливается» на последующие блоки case.

27.07.2017
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]