相关疑难解决方法(0)

Scala常量表达式和计算字符串文字

我在使用Java注释时遇到了一些棘手的问题,并且规定他们的参数必须是"常量".Scala 2.8语言规范的6.24规定"常量表达式"是以下任何一种(强调我的):

  • 值类的文字,例如整数
  • 字符串文字
  • 使用Predef.classOf构建的类(第12.5节)
  • 来自底层平台的枚举元素
  • 一个文字数组,形式为Array(c1,...,cn),其中所有ci本身都是常量表达式
  • 由恒定值定义(第4.1节)定义的标识符.

现在,"字符串文字"似乎是以这样的方式定义的,它实际上只是一个""或""""""分隔的字符块,这是非常明确的.那么,我的问题是给出的原因

object MyObject {
  final val MY_CONSTANT1="foo"
  final val MY_CONSTANT2="bar" + "baz"
  final val MY_CONSTANT3="qux" + "quux" + "frobozz"
}

// ...

@MyAnnotation( ??? )
def Foo(): Unit {
...
Run Code Online (Sandbox Code Playgroud)

@MyAnnotation用MY_CONSTANT1和MY_CONSTANT2编译和scaladocs,但不是MY_CONSTANT3(我得到"注释参数需要是常量").为什么MY_CONSTANT2可以工作?工作中是否有一些未指定的最多两个字符串 - 文字 - 可以组合成一个更大的规则,还是我疯了?

编辑我正在使用Scala 2.10,它似乎修复了早期Scala版本中一些与注释相关的编译器错误.

scala

10
推荐指数
1
解决办法
3536
查看次数

标签 统计

scala ×1