PHP Editor Xigua akan memperkenalkan anda kepada konsep penting hari ini - mentakrifkan jenis sebagai instantiasi jenis generik. Dalam pengaturcaraan, generik ialah cara yang fleksibel untuk menulis kod umum tanpa menyatakan jenis tertentu. Dengan mentakrifkan jenis sebagai instantiasi jenis generik, kami boleh menentukan jenis tertentu apabila menggunakannya, menjadikan kod itu lebih fleksibel dan boleh digunakan semula. Seterusnya, mari kita selami konsep ini dan lihat cara melaksanakan generik dalam PHP.
Dalam contoh di bawah, saya cuba mentakrifkan jenis PreciseAdder untuk memudahkan penggunaan jenis generik instantiated. Malangnya, pengkompil go nampaknya berfikir bahawa kaedah yang ditakrifkan pada jenis generik tidak boleh digunakan untuk jenis PreciseAdder. Saya tahu saya boleh menyelesaikan masalah ini melalui komposisi, tetapi adakah terdapat cara untuk menyelesaikan masalah ini melalui definisi jenis, dan jika tidak, apakah sebabnya?
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() }
ini:
type PreciseAdder Adder[PreciseAddable]
ialah pengisytiharan jenis, lebih khusus lagi takrif jenis. Ia mencipta jenis baharu, mengalih keluar semua kaedah.
Sebaliknya gunakan jenis alias yang akan mengekalkan semua kaedah, ia hanya memperkenalkan pengecam baharu untuk merujuk jenis yang sama:
type PreciseAdder = Adder[PreciseAddable]
(Perhatikan simbol =
antara pengecam dan jenis.)
Atas ialah kandungan terperinci Takrifkan jenis sebagai instantiasi jenis generik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!