5
到目前为止,我从来没有真正在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
}
}
}
的问题是,当我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
}
而这里的Acceptable
:
import java.io.File
trait Acceptable {
def accept(f:File):Boolean
}
我不明白为什么我需要进口后分号。
编辑:也许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
当我在“//额外的工作,看看它是否真的是一个图像”之后添加“true”时,它在Scala 2.9.0 RC1下使用fsc进行编译。 – 2011-04-21 20:59:04
在我的电脑上,我真的在那里。我只想缩短片段。 – Geo 2011-04-21 21:17:12
这可能是一个行结束问题 - 您是否可能意外地将您的文件保存为旧的Macintosh行结尾(\ r)?这实际上产生了你所看到的错误。 – Moritz 2011-04-21 22:22:58