Meiner Meinung nach ist eines der größten Dinge an Scala die Interoperabilität mit Java und die ähnliche Syntax. Eine Sache, die ich seltsam fand, ist die Verwendung des _
Operators für Paket-Wilcard-Importe anstelle des *
Operators, der in Java verwendet wird.
Gibt es einen technischen Grund für die Verwendung _
anstelle von *
? Wenn nicht, warum wurde diese Änderung vorgenommen?
Antworten:
In Scala ist das
*
ein gültiger Bezeichner. Man könnte schreiben:Mit dem Ergebnis:
Man könnte eine Klasse schreiben, die
*
so heißt:Wenn ich also eine Klasse
*
im Paket habeus.hexcoder
und schreibe:Sie würden sagen, dass Sie eine Klasse mit dem Namen importieren möchten
*
. Aus diesem Grund musste Scala ein anderes Symbol verwenden, um auf einen Platzhalterimport hinzuweisen. Aus welchem Grund auch immer, sie entschieden sich dafür_
, das Platzhalterzeichen zu verwenden.quelle
*
für die Multiplikation einbezogen werden. Daher musste ein anderes, weniger verbreitetes Zeichen als reserviertes Zeichen ausgewählt werden.In funktionalen Sprachen wird das Zeichen _ häufig verwendet, um zu sagen: "Dieser Parameter interessiert mich nicht" oder "Hier kann alles hingehen". Es ist nur sinnvoll, diesen Wert auf Namespace-Importe zu erweitern.
quelle
Zusätzlich zu Glenns Antwort
import
ist überall in Scala eine gültige Aussage und Sie könnenimport
ein Objekt oder eine Instanz in den Geltungsbereich aufnehmen. Da*
es sich offensichtlich um ein Mitglied vieler Klassen handelt, kann es nicht als Platzhalter für dieimport
Anweisung verwendet werden. Sie erhalten also eine Zeichenfolge, die kein gültiger Bezeichner sein darf._
kommt in den Sinn. Die Tatsache, dass es an anderen Stellen für eine andere Bedeutung verwendet wird (existentieller Typ, Funktion als Instanz), ist ebenfalls auf dasselbe Problem zurückzuführen.quelle
In Scala gibt es Dutzende von Stellen, an denen der Unterstrich verwendet wird. Die Verwendung für Platzhalterimporte ist nur eine logische Konsequenz.
quelle