跟我一起学“仓颉”编程语言-泛型类型 一、泛型泛型指的是参数化类型就是一个定义时未知但需要在使用时指定的类型在仓颉中泛型可以分为泛型函数和泛型类型。注意在定义泛型函数或泛型类型时使用类型标识符来表示未知的类型在使用泛型函数或泛型类型时为类型标识符传递具体的类型。二、泛型类型泛型函数定义了一个或多个类型形参的函数。package Study func getLastValueT (values: ArrayT) { return values[values.size - 1] } main() { println(getLastValue([1, 2, 3, 4, 5, 6])) }泛型类package Study class AreaCodeK, V { var area: K var code: V init(area: K, code: V) { this.area area this.code code } } main() { let cn AreaCodeString, Int64(中国, 86) println(地区: ${cn.area}, 区号: ${cn.code}) let els AreaCodeString, Int64(俄罗斯, 7) println(地区: ${els.area}, 区号: ${els.code}) }注意如果父类是泛型类子类是非泛型类在定义子类的时候必须把父类的每一个泛型变成具体类型。package Study open class AreaCodeK, V { var area: K var code: V init(area: K, code: V) { this.area area this.code code } } class InternalAreaCode : AreaCodeString, String { init(area: String, code: String) { super(area, code) } } main() { let hk InternalAreaCode(香港, 00852) println(城市: ${hk.area}, 区号: ${hk.code}) let shanghai InternalAreaCode(上海, 021) println(城市: ${shanghai.area}, 区号: ${shanghai.code}) }泛型结构体package Study struct AreaCodeK, V { var area: K var code: V init(area: K, code: V) { this.area area this.code code } } main() { let hk AreaCodeString, String(香港, 00852) println(城市: ${hk.area}, 区号: ${hk.code}) let shanghai AreaCodeString, String(上海, 021) println(城市: ${shanghai.area}, 区号: ${shanghai.code}) }泛型接口package Study interface USBT { func use(value: T): Unit } class Machine : USBString { public override func use(value: String) { println(${value}使用中) } } main() { Machine().use(打印机) }泛型枚举package Study enum MyOptionT { Yes(T) | No public func getOrThrow(): T { match (this) { case Yes(value) value case No throw NoneValueException(取值失败) // 抛出异常 } } } main() { let num MyOptionInt64.Yes(114514) println(num.getOrThrow()) let none MyOptionInt64.No println(none.getOrThrow()) }三、小结本章为大家详细的介绍了仓颉编程语言中泛型类型的内容下一章为大家带来泛型约束的内容。最后创作不易如果大家觉得我的文章对学习仓颉服务端开发有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家