2014-01-12 25 views
1

我在变量上使用方法有问题。通常Scala编译器会抱怨说,即使我的IDE(IDEA12)自动完成可用的方法,并且它在Scala Docs中定义,也没有这种方法可用。'值降不是字符串'的成员,虽然它应该是(使用IDEA12)

例如。

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

非常感谢您的任何建议。

编辑说这只发生在字符串,所有其他类型不受影响。 我似乎有导入“导入scala.Predef.String”并删除这个清除错误,但编译后来在Proguard阶段失败。

+0

你_sure_您使用Scala的2.10编译的代码?你如何编译它? –

+0

您好,这是IDEA 12与Android SDK,是的编译器是Scala 2.10.3。 C:\ Users \ ed> scala 欢迎来到Scala版本2.10.3(Java HotSpot™64位服务器虚拟机,Java 1.7.0_0 9) –

+1

这是REPL而不是Scala编译器。编译Scala代码的步骤是什么? –

回答

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. 
相关问题