当谈到原语的神奇转换时,Scala似乎表现得像Java一样:
val a: Int = 1
val b: Double = 2.3
println(a + b) // 3.3
println(Math.max(a, b)) // 2.3
通常,这是我的代码中的错误来源。有没有办法禁用这些隐式转换,以便我的示例给出编译警告/错误?我真的宁愿写
print(a.toDouble + b)
println(Math.max(a.toDouble, b))
我每次都需要这样的转换。
答案 0 :(得分:5)
使用WartRemover。像这样的疣不是内置的,但可以编写(参见README中的“编写疣规则”)。虽然现在我认为,这可能比我最初的想法更多。
scalac
还有-Ywarn-numeric-widen
选项(与-Xfatal-warnings
一起将警告变为错误),但我不知道是否有任何案例未被覆盖。