Geo*_*Geo 5 import scala traits
到目前为止,我在Scala中从未真正使用Traits,我想改变它.我有这个代码:
import tools.nsc.io.Path
import java.io.File
trait ImageFileAcceptor extends FileAcceptor {
override def accept(f:File) = {
super.accept(f) match {
case true => {
// additional work to see if it's really an image
}
case _ => false
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我编译时sbt,我继续收到:
ImageFileAcceptor.scala:2: ';' expected but 'import' found.
如果我;在导入后添加,代码将编译.这是FileAcceptor:
import java.io.File
trait FileAcceptor extends Acceptable {
override def accept(f:File):Boolean = f.isFile
}
Run Code Online (Sandbox Code Playgroud)
这是Acceptable:
import java.io.File
trait Acceptable {
def accept(f:File):Boolean
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我在进口后需要分号.
编辑:也许sbt的输出是有帮助的:
[info] Building project tt 1.0 against Scala 2.8.1
[info] using sbt.DefaultProject with sbt 0.7.5 and Scala 2.7.7
Run Code Online (Sandbox Code Playgroud)
当 scala 编译器遇到 Macintosh 行结尾 --being \r-- 时,scala 编译器将错误地声明需要分号,正如 Moritz 推断的那样。Scala 参考手册的 1.2 节描述了正确的换行符。我在参考文献中找不到哪些字符文字被视为换行符。根据经验,Windows ( \r\n) 和 Unix ( \n) 都可以接受。想必scala在这方面与Java是严格兼容的。