我有一些嵌套的case类,对于特定的序列化机制,我需要提供一个包含$
字符的productPrefix
。就像这样
object Foo {
case class Bar() {
override def productPrefix = "Foo$Bar"
}
}
现在,我收到一个编译器警告:
Warning:(53, 42) possible missing interpolator: detected interpolated identifier `$Bar`
override def productPrefix: String = "Foo$Bar"
是否有办法禁用警告(如果可能的话,仅针对此示例)?Scala版本是2.11.8。
**编辑:**我只是觉得我很聪明:"Foo\u0024Bar"
。但编译器甚至对此发出了警告。另一种解决方案是classOf[Bar].getName
,假设没有更多的外部对象。
5条答案
按热度按时间14ifxucb1#
如果有一种方法可以将弦的各个部分组合在一起,你可以这样做。
您还可以通过实际调用插值器,但转义
$
来关闭“Missing Interpolator”警告。rseugnpd2#
该警告由
-Xlint
引起。通过将scalac
命令行选项指定为,可以禁用有关假定缺少的内插器的特定链接下划线(
_
)表示“一切”,-missing-interpolator
表示“除了缺少插值器警告”。oknwwptz3#
如果在范围内发现变量,
-Xlint
会发出警告:通常,在插补时,使用双美元表示文字美元。(编辑:明确一点,
$$
类似于\$
。)使用f-内插器来获得一个常量字符串。
您还可以将时髦的常量放在隔离范围内:
该常量是内联的。空引用的诀窍是避免任何分配,包括任何单例对象。
vtwuwzda4#
只有当词法作用域中存在具有该名称的标识符时,才会出现警告。如果林特在标识符是val/var时抱怨它,您只需将val/var重命名
ifmq2ha25#
您可以将
@nowarn
注解放在定义上:“Missing Interpolator”警告通常很有用,所以我不会禁用它。