Do tej pory nie używałem zbyt wiele cech Scali i chcę to zmienić. Mam ten kod:Dlaczego potrzebuję średników po tych importach?
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
}
}
}
Problemem jest to, kiedy mogę skompilować z sbt
, trzymam przyjmującej:
ImageFileAcceptor.scala:2: ';' expected but 'import' found.
Jeśli dodać ;
po imporcie, kod kompiluje. Oto FileAcceptor
:
import java.io.File
trait FileAcceptor extends Acceptable {
override def accept(f:File):Boolean = f.isFile
}
A oto Acceptable
:
import java.io.File
trait Acceptable {
def accept(f:File):Boolean
}
Nie rozumiem dlaczego muszę średników po przywozie.
EDIT: może wyjście SBT jest pomocne:
[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
Kiedy dodaję "true" po "// dodatkowej pracy, aby sprawdzić, czy to naprawdę obraz", kompiluje się dobrze z fsc pod Scala 2.9.0 RC1. –
Na moim komputerze mam tam prawdę. Chciałem tylko skrócić ten fragment. – Geo
Może to być problem kończący linię - czy może przypadkowo zapisałeś plik ze starymi zakończeniami linii Macintosh (\ r)? To faktycznie powoduje dokładnie ten błąd, który widzisz. – Moritz