Почему `val` внутри` object` не является финальным автоматически?
В чем причинаval
не является (?) автоматически финальным в одноэлементных объектах? Например.
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
само по себе окончательно, а значит и его участники?