2016-09-06 2 views
6

`Case is 'экземпляр конкретной ситуации; пример чего-то происходящего '.Почему класс case называется «case»?

Итак, мой вопрос: почему классы Scala «case» называются «case»? В чем смысл? Почему это «случай», а не «данные» или что-то еще? Что означает «случай» в этом случае. Case :)

+1

Я думаю, в основном потому, что они могут использоваться как шаблоны в выражениях соответствия _pattern, например. 'myVal match {case MyCaseClass (a, b) => ...}', где каждый класс case является отдельным _case _... –

+0

Тому, кто голосовал за закрытие: я не думаю, что этот вопрос слишком широк. – pedrofurla

+0

Очевидно, класс case - это просто контейнер полей данных, так как чемодан является контейнером костюмов. –

ответ

8

Первичное использование case ключевого слова на других языках в switch -statements, которые в основном используются на enum с или сопоставимых значениями, такими как int s или string s используется для представления различных четко определенных случаях:

switch (value) 
{ 
    case 1: // do x - 
    case 2: // do y - 
    default: // optional 
} 

в Скале эти классы часто представляют собой конкретные четко определенные возможные случаи абстрактного класса и используются во многом таким же образом, императивный код у SES выключатели операторы внутри match -clauses:

value match { 
    case Expr(lhs, rhs) => // do x 
    case Atomic(a) => // do y 
    case _ => // optional, but will throw exception if something cannot be matched whereas switch won't 
} 

Большая часть поведения классов дела, такие как, как они могут быть построены цели на содействие/включение их использование в таких заявлениях.

+0

Сходство с Java затрудняет мне теперь получить Java-переключатель в первый раз. Я хочу, чтобы ключевое слово было другим, возможно, повторное использование 'match' (который, как они говорят, начал работать как имя метода). Поскольку случаи - это просто шаблоны, '{match p1 =>}'. Возможно, это было бы однозначно, а также сохранить ключевое слово. Почему они этого не сделали? (Вывод NL может быть сложным, '{match p1 => x match и т. Д.}'.) –

1

Это потому, что они могут использоваться для сопоставления с образцом. A кейс на английском языке использование означает одна из возможностей; и это то, что соответствует шаблону.

например, «Есть три случая, мы должны рассмотреть здесь ...»

+0

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