Зачем мне нужны точки с запятой после импорта? - PullRequest
5 голосов
/ 21 апреля 2011

До сих пор я никогда особо не использовал Черты в Scala, и я хочу это изменить. У меня есть этот код:

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

1 Ответ

4 голосов
/ 29 апреля 2011

Когда компилятор scala встречает конец строки в Macintosh - \r - компилятор scala ошибочно объявляет о необходимости использования точки с запятой, как это сделал Мориц. Раздел 1.2 Справочного руководства Scala описывает правильные символы новой строки. Я не смог найти в справочнике, какие литералы символов считались символами новой строки. Из опыта, как Windows (\r\n), так и Unix (\n) являются приемлемыми. Предположительно, в этом отношении scala строго совместима с Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...