Mit Gleichheitszeichen:
object HelloWorld {
def main(args: Array[String]) = {
println("Hello!")
}
}
Ohne Gleichheitszeichen:
object HelloWorld {
def main(args: Array[String]) {
println("Hello!")
}
}
Beide oben genannten Programme werden auf die gleiche Weise ausgeführt. In dem Blog-Beitrag Dinge, die ich in Scala nicht mag, habe ich gelesen, dass die Methode zurückgegeben wird, wenn das Gleichheitszeichen fehlt Unit
(wie bei Java void
). Daher müssen Methoden, die einen Wert zurückgeben, das Gleichheitszeichen verwenden. Methoden, die keinen Wert zurückgeben, können jedoch so oder so geschrieben werden.
Was ist die beste Vorgehensweise für die Verwendung des Gleichheitszeichens in Scala-Methoden, die keinen Wert zurückgeben?
UPDATE: Ab Scala-2.10 wird die Verwendung des Gleichheitszeichens bevorzugt. Alte Antwort:
Methoden, die zurückgeben,
Unit
sollten immer die ungleiche Syntax verwenden. Dies vermeidet mögliche Fehler bei der Implementierung, die in die API übertragen werden. Zum Beispiel hätten Sie versehentlich so etwas tun können:Ein triviales Beispiel natürlich, aber Sie können sehen, wie dies ein Problem sein könnte. Da der letzte Ausdruck nicht zurückgegeben wird
Unit
, hat die Methode selbst einen anderen Rückgabetyp alsUnit
. Dies wird in der öffentlichen API angezeigt und kann später zu anderen Problemen führen. Bei der ungleichen Syntax spielt es keine Rolle, was der letzte Ausdruck ist. Scala korrigiert den Rückgabetyp alsUnit
.Es ist auch zwei Zeichen sauberer. :-) Ich neige auch dazu zu denken, dass die ungleiche Syntax den Code nur ein wenig leichter lesbar macht. Es ist offensichtlicher, dass die fragliche Methode
Unit
eher einen nützlichen Wert zurückgibt als einen nützlichen.In einem verwandten Zusammenhang gibt es eine analoge Syntax für abstrakte Methoden:
Die Methode
bar
hat eine SignaturString=>Unit
. Scala tut dies, wenn Sie die Typanmerkung für ein abstraktes Element weglassen. Dies ist wieder einmal sauberer und (glaube ich) leichter zu lesen.quelle
Sie müssen Gleichheitszeichen in Anrufdeklarationen verwenden, mit Ausnahme der Definitionen, die Unit zurückgeben.
In diesem letzteren Fall, Sie können das Gleichheitszeichen verzichten. Diese Syntax ist jedoch möglicherweise veraltet, sodass sie am besten vermieden wird. Die Verwendung des Gleichheitszeichens und die Deklaration des Rückgabetyps funktioniert immer.
quelle
Für Methoden empfiehlt Scala Style Guide die gleiche Syntax im Gegensatz zur Prozedursyntax
quelle
Eine Sache: Stellen Sie sich vor, die letzte Anweisung einer Methode, die Unit zurückgeben soll, gibt Unit nicht zurück. Die Verwendung der ungleichen Syntax ist dann sehr praktisch. Ich hoffe, dass dies nicht veraltet ist, da ich mehrere Anwendungsfälle dafür sehe
quelle
Im Laufe der Zeit hat sich der Standardstil geändert, und dies wurde in vielen Kommentaren zu Antworten erwähnt. Im offiziellen Styleguide wird empfohlen , die
=
Syntax für Funktionsdeklarationen zu verwenden.quelle
Bei Methoden, die keinen Rückgabewert haben, können Sie solche Methoden ausdrücken, indem Sie den Ergebnistyp und das Gleichheitszeichen weglassen. Folgen Sie dabei der Methode mit einem Block in geschweiften Klammern. In dieser Form sieht die Methode wie eine Prozedur aus, eine Methode, die nur wegen ihrer Nebenwirkungen ausgeführt wird.
quelle