5

我有這個pattern match匹配上字節值,但是當我加入@switch它說:爲什麼Scala不能優化匹配到交換機?

不能發出開關@switch註釋匹配

缺少什麼我在這裏?

僅供參考,我已經嘗試過,並沒有工作:

  • 移動這個常量到Java界面和public static final byte領域(我也試圖讓他們int,而不是byte
  • 標誌在斯卡拉Message同伴的字段作爲final val對象
  • 在同伴對象
標記字段爲

我絕對失去了這裏。

+0

這是[不可能](http://www.scala-lang.org/api/current/index.html#scala.annotation.switch):'非文字可能會阻止切換代:這不會編譯' 。 – senia 2013-05-01 04:27:22

+0

這篇文章包含一個無效鏈接,使問題不完整,如果原來的海報仍然存在,你可以請求修復 – lijat 2014-12-16 13:48:18

+0

現在它包括正確的鏈接。 – 2014-12-16 15:08:09

回答

2

截至scala-user論壇提供了使丘壑最終並移除Byte註解答案:

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

現在@switch正確生成一個lookupswitch(它不產生tableswitch但它的不夠好) 。

相關問題