Standardargument, das bei der Definition des Funktionstyps in einem Tupel-Typ nicht erlaubt ist

9

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?

    
idmean 27.12.2015, 11:04
quelle

2 Antworten

6

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) -> ()

schreiben

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.

    
luk2302 27.12.2015 11:50
quelle
-2

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.

    
Earl Grey 27.12.2015 11:50
quelle

Tags und Links