Der PHP-Editor Xigua stellt Ihnen heute ein wichtiges Konzept vor – die Definition von Typen als Instanziierungen generischer Typen. In der Programmierung stellen Generika eine flexible Möglichkeit dar, allgemeinen Code zu schreiben, ohne einen bestimmten Typ anzugeben. Indem wir einen Typ als generische Typinstanziierung definieren, können wir bei seiner Verwendung den spezifischen Typ angeben, wodurch der Code flexibler und wiederverwendbar wird. Lassen Sie uns als Nächstes in dieses Konzept eintauchen und sehen, wie man Generics in PHP implementiert.
Im folgenden Beispiel versuche ich, einen PreciseAdder-Typ zu definieren, um die Verwendung instanziierter generischer Typen zu vereinfachen. Leider scheint der Go-Compiler zu glauben, dass für generische Typen definierte Methoden nicht auf PreciseAdder-Typen anwendbar sind. Ich weiß, dass ich dieses Problem durch Komposition lösen kann, aber gibt es eine Möglichkeit, dieses Problem durch Typdefinition zu lösen, und wenn nicht, was ist der Grund?
package main type Addable interface { Add() } type Adder[T Addable] struct{} func (a Adder[T]) DoAdd(){} type PreciseAddable struct{} func (p PreciseAddable)Add(){} type PreciseAdder Adder[PreciseAddable] func main() { var p PreciseAdder p.DoAdd() }
dieses:
type PreciseAdder Adder[PreciseAddable]
ist eineTypdeklaration, genauer gesagt eineTypdefinition. Es erstellt einen neuen Typ und entfernt alle Methoden.
Verwenden Sie stattdessenTypaliase, wodurch alle Methoden erhalten bleiben. Es wird lediglich ein neuer Bezeichner eingeführt, um auf denselben Typ zu verweisen:
type PreciseAdder = Adder[PreciseAddable]
(Beachten Sie das=
-Symbol zwischen Bezeichner und Typ.)
Das obige ist der detaillierte Inhalt vonDefinieren Sie einen Typ als generische Typinstanziierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!