Оператор switch (слово переводится как "коммутатор" – прим. пер.) позволяет проверять переменную на равенство со списком значений. Каждое значение называется случаем (case), а коммутируемая переменная сравнивается с каждым случаем.
Синтаксис оператора switch в языке D следующий:
switch(выражение) { case константное_выражение : оператор(ы); break; case константное_выражение : оператор(ы); break; * Вы можете иметь любое количество операторов case */ default : оператор(ы); }
К инструкции switch применяются следующие правила:
Со времени написания этого учебника тонкости в работе оператора switch поменялись несколько раз, поэтому я позволил себе переделать нижеследующий список – прим. пер.Выражение, используемое в операторе switch может иметь целый, перечисляемый или строковый тип.
В switch может быть любое количество операторов case. За каждым case следует сравниваемое значение, с последующим двоеточием.
Константное_выражение для каждого case должно быть тем же типом данных, что и переменная в switch, и должно быть константой или литералом.
Когда коммутируемая переменная оказывается равной case, операторы, следующие за этим case, выполняются до тех пор, пока не будет достигнут один из операторов, прерывающих прямое выполнение программы: break, continue, return или goto case. Присутствие одного из них в конце списка операторов обязательно. Также допустим оператор throw, вызывающий исключение.
Когда достигнут оператор break, switch завершается, и поток выполнения переходит к следующей строке, следующей за оператором switch.
Когда достигнут оператор continue, switch завершается, и поток выполнения переходит к следующей итерации цикла, внутри которого находится оператор switch.
Когда достигнут оператор goto case, поток выполнения "падает" в следующий оператор case.
"Тело" оператора case может быть пустым, тогда поток выполнения переходит к операторам в следующим за ним case.
В операторе switch должен присутствовать случай по-умолчанию default, который выполняется, если ни один из случаев не является истинным. break или какой-либо другой прерывающий прямое выполнение оператор здесь также обязателен.
import std.stdio; int main () { /* Определение локальной переменной */ char grade = 'B'; switch(grade) { case 'A' : writefln("Великолепно!" ); break; case 'B' : case 'C' : writefln("Хорошо" ); break; case 'D' : writefln("Вы прошли" ); break; case 'F' : writefln("Лучше повторите попытку" ); break; default : writefln("Недопустимая оценка" ); } writefln("Ваша оценка %c", grade ); return 0; }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Хорошо Ваша оценка B