Tôi chưa bao giờ thực sự sử dụng Traits nhiều trong Scala cho đến nay, và tôi muốn thay đổi điều này. Tôi có mã này:Tại sao tôi cần dấu chấm phẩy sau các lần nhập này?
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
}
}
}
Vấn đề là, khi tôi biên dịch với sbt
, tôi tiếp tục nhận:
ImageFileAcceptor.scala:2: ';' expected but 'import' found.
Nếu tôi thêm ;
sau khi nhập khẩu, mã biên dịch. Dưới đây là FileAcceptor
:
import java.io.File
trait FileAcceptor extends Acceptable {
override def accept(f:File):Boolean = f.isFile
}
Và đây là Acceptable
:
import java.io.File
trait Acceptable {
def accept(f:File):Boolean
}
Tôi không hiểu tại sao tôi cần phẩy sau khi nhập khẩu.
EDIT: maybe đầu ra của SBT là hữu ích:
[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
Khi tôi thêm "true" sau "// work bổ sung để xem nó có thực sự là một hình ảnh" hay không, nó biên dịch tốt với fsc theo Scala 2.9.0 RC1. –
Trên máy tính của tôi, tôi đã thực sự ở đó. Tôi chỉ muốn rút ngắn đoạn mã. – Geo
Đây có thể là sự cố kết thúc dòng - có phải bạn có thể vô tình lưu tệp của mình bằng các kết thúc dòng Macintosh cũ (\ r) không? Điều đó thực sự tạo ra chính xác lỗi bạn đang thấy. – Moritz