Переключатель (Случай) всегда неправильно?

Python 3.7 теперь официально поддерживается в TensorFlow 1.13.1:

Основные функции и улучшения

  • TensorFlow Lite перешел с contrib на core. Это означает, что модули Python находятся в tf.lite, а исходный код теперь находится в тензорном потоке / lite, а не тензорном потоке / contrib / lite.
  • Двоичные файлы TensorFlow GPU теперь созданы для CUDA 10 и TensorRT 5.0.
  • Поддержка Python3.7 во всех операционных системах.
  • Переведен NCCL в ядро.
blockquote>

источник

11
задан Igor Oks 24 November 2009 в 09:20
поделиться

8 ответов

Используйте Переключатели, когда Вы протестируете на значениях примитивов. (т.е. целые числа или символы).

Используйте полиморфизм, когда Вы выберете между различными типами.

Примеры: Тестирование, вошел ли символ пользователь, является одним из, 'b', или 'c' является заданием для переключателя.

Тестирование, имеете ли объект Вы дело с, является Собакой, или CAT является заданием для полиморфной отправки.

На многих языках, если у Вас есть более сложные значения, Вы не можете использовать Переключатель так или иначе.

25
ответ дан 3 December 2019 в 01:07
поделиться

В первую очередь, Простота часто является хорошим проектным решением.

Я никогда не понимал эту предвзятость против переключателя/случая. Да, этим можно злоупотребить, но что, так может примерно любая конструкция программирования.

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

16
ответ дан 3 December 2019 в 01:07
поделиться

Для одного, удобочитаемости.

5
ответ дан 3 December 2019 в 01:07
поделиться

Да, определенно. Много раз Ваш переключатель только относится к очень небольшой части Вашей полной логики, и это была бы ошибка создать целые новые классы только для этого незначительного эффекта.

Например, скажем, у Вас есть база данных слов, ввод данных пользователем другое слово, и Вы хотите найти, что слово в базе данных, но включает возможные множественные числа. Вы могли бы записать что-то как (C++)


vector<string> possible_forms;
possible_forms.push_back(word);
char last_letter = word[word.size() - 1];
switch (last_letter) {
  case 's':
  case 'i':
  case 'z':
    possible_forms.push_back(word + "es");
    break;
  case 'y':
    possible_forms.push_back(word.substr(0, word.size() - 1) + "ies");
    break;
  default:
    possible_forms.push_back(word + "s");
}

Выполнение этого со стратегиями было бы излишеством.

5
ответ дан 3 December 2019 в 01:07
поделиться

"Стратегии" могли быть созданы с переключателем.

Это могло быть начальной точкой и оттуда позволить полиморфизму сделать задание.

Другой, который приходит на ум потребность в дополнительной скорости за счет гибкости. Существуют случаи.

0
ответ дан 3 December 2019 в 01:07
поделиться

Нет, оператор переключения является, вероятно, только хорошим проектным решением в простых ситуациях.

После того как Вы передаетесь простая ситуация, операторы переключения становятся очень болезненными, чтобы продолжать обновлять и поддерживать. Это - часть причины, шаблоны разработки появились.

-2
ответ дан 3 December 2019 в 01:07
поделиться

это обычно в порядке, пока у Вас только есть один переключатель в одном месте. когда у Вас есть больше чем один (или многие), затем время, также рассматривают альтернативы.

1
ответ дан 3 December 2019 в 01:07
поделиться

Я считаю, что переключатель всегда неверен:

Тело дела - это код, а - поведение , следовательно, вещь в футляре («значение») имеет поведенческий тип, следовательно, полиморфизм был бы лучшим выбором.

Это означает, что значения на самом деле являются типами, например, число 1 - это тип всего, что в некотором роде равно 1. Все, что нам остается, это сопоставить единичность с поведением для нашего конкретного случая, и у нас есть полиморфизм со всеми этими типами (Хорошая вещь).

Это легче сделать на некоторых языках, чем на других, к сожалению, большинство широко используемые языки довольно ужасны, поэтому путь наименьшего сопротивления неправильный, и люди в конечном итоге пишут переключатели или операторы if (одно и то же).

-4
ответ дан 3 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: