Ich habe eine Funktion wie folgt:
%Vor%Und jetzt möchte ich einen Typ-Alias definieren, damit ich diese Funktion leicht umgehen kann.
Ich kann jedoch nicht feststellen, dass das erste Argument einen Standardwert hat. Ich habe solche Dinge probiert.
%Vor%aber alle geben mir eine Fehlermeldung wie
Standardargument nicht erlaubt in einem Tupeltyp
Gibt es eine Möglichkeit, einen Typ für diese Art von Funktion zu definieren?
Nein , das ist nicht möglich
Erläuterung:
Eine -Typ-Alias-Deklaration führt einen benannten Alias eines vorhandenen Typs in Ihr Programm ein.
(step: Int = 1) -> ()
ist kein richtiger Typ. Ein Typ ist beispielsweise (step: Int) -> ()
, ein Standardwert ist dort nicht erlaubt.
Wenn Sie
schreiben %Vor% Es funktioniert. Oder auch wenn Sie (step: Int) -> ()
Aber ich nehme an, was Sie erreichen wollen, ist in der Lage, nextFunc()
aufzurufen, den Parameter zu verlassen und seinen Standardwert zu verwenden. Das ist nicht möglich. Um zu verstehen, warum, können Sie die Type Alias Declaration
Grammatik - in type
können Sie keine Standardwerte angeben.
Das Problem ist genau das, was es sagt. Sie können in einem Typalias kein Standardargument angeben.
Es muss so sein:
%Vor%Ihre Erwartung, einen Standardwert festlegen zu können, ist zwecklos und macht keinen Sinn. (Sie zeigten Enttäuschung mit Swift in den Kommentaren, aber zum Glück geht es Swift diesbezüglich gut.)
Zunächst einmal ist die Aktion eine Schließung, die selbst auch ein Typ ist. Ein Typ selbst kann KEINE Art von Wert haben. Typ ist niemals ein konkreter Wert, es ist ein dimensionsloses Merkmal einer Variablen, es ist eine qualitative Beschreibung.
Sie müssen die Beziehung zwischen den drei Begriffen richtig verstehen: Variable - Typ - Wert
Eine Variable ist eine Entität. Es hat drei Dinge - einen Namen, einen Typ und einen Wert.
Der Wert ist eine Realisierung des Typmerkmals.
BEISPIEL
Sie könnten eine Variable namens myDayOfRest haben, die vom Typ DayOfWeek
ist und Werte von SU MO TU WE TH FR SA
haben kann.
Beachten Sie dies - & gt; Lassen Sie myDayOfRest vom Typ DayOfWeek sein und einen Wert von SA haben.
in Swift wäre es
%Vor% Wenn Sie nun eine type alias
für den DayOfWeek-Typ erstellen, geben Sie dem TYPE nur einen alternativen Namen. Niemals auf die konkrete Variable. Immer zum TYP. Aber es ist nicht der Typ, der einen Wert hat, es sind Variablen, die Werte haben.
Hoffentlich können Sie jetzt sehen, warum es nicht sinnvoll ist, einen Standardwert in einem Typalias angeben zu können.
Tags und Links swift