为什么可以';Scala是否将此匹配优化为交换机?
我有一个只在字节值上匹配的开关,但当我添加为什么可以';Scala是否将此匹配优化为交换机?,scala,optimization,pattern-matching,switch-statement,constants,Scala,Optimization,Pattern Matching,Switch Statement,Constants,我有一个只在字节值上匹配的开关,但当我添加@开关时,它会显示: 无法将开关发送到@switch注释匹配 我错过了什么 仅供参考,我已经尝试过但没有成功: 将此常量移动到Java接口并使用公共静态最终字节字段(我还尝试将它们设置为int而不是字节) 在Scala消息伴生对象中将字段标记为final val 在伴生对象上将字段标记为@inline 我在这里肯定迷路了。论坛上提供的答案是将VAL作为最终版本,并删除字节注释: object Message { final val Authent
@开关时,它会显示:
无法将开关发送到@switch注释匹配
我错过了什么
仅供参考,我已经尝试过但没有成功:
- 将此常量移动到Java接口并使用
公共静态最终字节
字段(我还尝试将它们设置为int
而不是字节
)
- 在Scala
消息
伴生对象中将字段标记为final val
- 在伴生对象上将字段标记为
@inline
我在这里肯定迷路了。论坛上提供的答案是将VAL作为最终版本,并删除字节
注释:
object Message {
final val Authentication = 'R'
final val BackendKeyData = 'K'
final val Bind = 'B'
final val BindComplete = '2'
}
现在,@开关
正确地生成了一个查找开关
(它没有生成一个表开关
,但它已经足够好了)。它是:非文字可能会阻止开关的生成:这不会编译
。这篇文章包含一个死链接,使得问题不完整,如果原始海报仍然存在,你能修好吗?现在它包括了正确的链接。