Когда регистр синтаксически значим?

Случай, а не case.

Видимо, case a сопоставляет что-либо и связывает его с именем a, а case A ищет A переменная и соответствует чему-либо == считает равным A. Это стало для меня неожиданностью; хотя я знаю, что Scala чувствителен к регистру, я никогда не ожидал, что идентификатор идентификатора повлияет на правила синтаксического анализа.

Часто ли синтаксис Scala заботится о случае идентификаторов, или существует лишь небольшое количество контекстов, в которых это происходит? Если таких контекстов немного, то что это? Я не смог ничего найти в Google; все, что я получил, было результатами о сопоставлении с образцом.

7 голосов | спросил user2357112 15 MaramWed, 15 Mar 2017 02:35:08 +03002017-03-15T02:35:08+03:0002 2017, 02:35:08

1 ответ


0

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

Например:

val a: Any = List(1, 2, 3)
val c = 1

// z is a type variable
a match { case b: List[z] => a }

// Type match on `Int`
a match { case b: List[Int] => a }

// type match on the singleton c.type (not a simple lower case identifier)
// (doesn't actually compile because c.type will never conform)
a match { case b: List[c.type] => a }

Соответствие типов, как в первом примере, малоизвестно, потому что оно вряд ли используется.

ответил Michael Zajac 15 MaramWed, 15 Mar 2017 03:24:07 +03002017-03-15T03:24:07+03:0003 2017, 03:24:07

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132