В чем причина того, что val
not (?) является автоматически окончательным в одиночных объектах? Например.
object NonFinal {
val a = 0
val b = 1
def test(i: Int) = (i: @annotation.switch) match {
case `a` => true
case `b` => false
}
}
приводит к:
<console>:12: error: could not emit switch for @switch annotated match
def test(i: Int) = (i: @annotation.switch) match {
^
В то время как
object Final {
final val a = 0
final val b = 1
def test(i: Int) = (i: @annotation.switch) match {
case `a` => true
case `b` => false
}
}
Скомпилирует без предупреждений, поэтому предположительно генерирует более быструю таблицу сопоставления шаблонов.
Мне нужно добавить final
для меня чистый раздражающий шум. Разве это не финал object
и, следовательно, его члены?