ОБНОВЛЕНИЕ: начиная с Scala-2.10 использование знака равенства является предпочтительным. Старый ответ:
Методы, которые возвращают Unit
, должны всегда использовать синтаксис неравных. Это позволяет избежать потенциальных ошибок при переносе реализации в API. Например, вы могли бы случайно сделать что-то вроде этого:
object HelloWorld {
def main(args: Array[String]) = {
println("Hello!")
123
}
}
Тривиальный пример, конечно, но вы можете видеть, как это может быть проблемой. Поскольку последнее выражение не возвращает Unit
, сам метод будет иметь тип возвращаемого значения, отличный от Unit
. Это раскрыто в общедоступном API и может вызвать другие проблемы в будущем. С синтаксисом non-equals не имеет значения, что является последним выражением, Scala фиксирует тип возвращаемого значения как Unit
.
Это также уборщик двух символов. :-) Я также склонен думать, что синтаксис неравных делает код немного легче для чтения. Более очевидно, что данный метод возвращает Unit
, а не какое-либо полезное значение.
В соответствующей заметке есть аналогичный синтаксис для абстрактных методов:
trait Foo {
def bar(s: String)
}
Метод bar
имеет подпись String=>Unit
. Scala делает это, когда вы опускаете аннотацию типа для абстрактного члена. Еще раз, это чище, и (я думаю) легче читать.