Soweit ich weiß, werden Eigenschaften wie List
oder Seq
in der Scala-Standardbibliothek implementiert, anstatt Teil der Sprache selbst zu sein.
Es gibt jedoch eine Sache, die ich nicht verstehe: Man hat eine Syntax für variadische Funktionen, die aussieht wie
%Vor% Intern hat man Zugriff auf args
und es wird Seq
.
Es ist mir nicht klar, ob:
Seq
wird als eine spezielle Datenstruktur betrachtet, die ausreicht, um als Teil der Sprache zu erscheinen, oder *
-Notation ist hier ein spezieller Fall einer allgemeineren Syntax, die es vermeidet, Verweise auf konkrete Datenstrukturen zu verwenden. Weiß jemand, welches die richtige Interpretation ist?
Es ist in der Tat eine gewisse Unschärfe zwischen Sprache und Bibliothek. Die Scala Language Specification v2.9 gibt in §4.6.2 Wiederholte Parameter :
anDer letzte Wertparameter eines Parameterabschnitts kann mit "*" versehen sein, z. (..., x: T *). Der Typ eines solchen wiederholten Parameters innerhalb der Methode ist dann der Sequenztyp
scala.Seq[
T]
.
Wenn Sie also wiederholte Argumente verwenden, wird angenommen, dass scala.Seq
zur Laufzeit verfügbar ist (was der Fall sein sollte, da es Teil der Standardbibliothek ist).
Ich denke, es ist der erste. Es gibt ein paar Arten, die die Sprache verlangt, obwohl sie nicht wirklich Teil der Sprache sind. Mit Seq hast du eins gefunden.
Tags und Links scala data-structures language-design variadic-functions