Первичное использование 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
}
Большая часть поведения классов дела, такие как, как они могут быть построены цели на содействие/включение их использование в таких заявлениях.
Я думаю, в основном потому, что они могут использоваться как шаблоны в выражениях соответствия _pattern, например. 'myVal match {case MyCaseClass (a, b) => ...}', где каждый класс case является отдельным _case _... –
Тому, кто голосовал за закрытие: я не думаю, что этот вопрос слишком широк. – pedrofurla
Очевидно, класс case - это просто контейнер полей данных, так как чемодан является контейнером костюмов. –