5

я это pattern match что соответствует только на байтовые значения, но когда я добавляю @switch он говорит:Почему Scala не может оптимизировать этот матч до переключателя?

не может испускать переключиться на @switch аннотированных матч

Что я здесь отсутствует?

Просто FYI, что я уже пробовал и не получилось:

  • Moving эту константу интерфейс Java и с помощью public static final byte полей (я также пытался сделать их int вместо byte)
  • Маркировка поля как final val на Scala Message компаньона объекта
  • Разметка поля как @inline на объекте компаньон

Я определенно потерян здесь.

+0

Это [невозможно] (http://www.scala-lang.org/api/current/index.html#scala.annotation.switch): 'нелитерал может предотвратить генерацию коммутатора: это не скомпилирует' , – senia

+0

Этот пост содержит мертвую ссылку, которая делает вопрос незавершенным, если оригинальный плакат все еще вокруг, не могли бы вы исправить это, что – lijat

+0

теперь включает в себя правильную ссылку. –

ответ

2

Ответ, как это предусмотрено в scala-user форуме делали Vals окончательным и удаление Byte аннотацию:

object Message { 
    final val Authentication = 'R' 
    final val BackendKeyData = 'K' 
    final val Bind = 'B' 
    final val BindComplete = '2' 
} 

Теперь @switch правильно производимой lookupswitch (он не создает tableswitch, но это достаточно хорошо) ,

Смежные вопросы