我在变量上使用方法时遇到问题。通常,Scala编译器抱怨没有这样的方法可用,即使我的IDE(IDEA12)自动填充可用的方法,并且它在Scala Docs中定义。
例如。
val x:String = "abc"
var y:String = null
y = x.drop(1)
结果:
error: value drop is not a member of String
y = x.drop(1)
有趣的是:
var x = List.fromArray(y) //why does this work and not below?
var x = y.toList
第一个弃用(并建议使用.toList)函数工作正常,第二个方法抛出相同的“不是”编译时错误的成员。
我正在使用Scala 2.10
非常感谢您的任何建议。
编辑说这只发生在字符串中,所有其他类型都不受影响。 我似乎有导入“import scala.Predef.String”并删除它会清除错误,但是稍后在Proguard阶段编译失败。
答案 0 :(得分:3)
这是禁用Predef自动导入的方法。 (还有选项-Yno-predef
。)
scala> :pa -raw
// Entering paste mode (ctrl-D to finish)
import Predef.String
object X { "abc".drop(1) }
// Exiting paste mode, now interpreting.
<pastie>:2: error: value drop is not a member of String
object X { "abc".drop(1) }
^
There were compilation errors!
如果您需要有选择地禁用:
scala> :pa -raw
// Entering paste mode (ctrl-D to finish)
import Predef.{ assert => _, _}
object X { "abc".drop(1) }
// Exiting paste mode, now interpreting.