news 2026/6/8 19:11:59

跟我一起学“仓颉”编程语言-泛型类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跟我一起学“仓颉”编程语言-泛型类型

一、泛型

泛型指的是参数化类型,就是一个定义时未知,但需要在使用时指定的类型,在仓颉中,泛型可以分为泛型函数和泛型类型。

注意:在定义泛型函数或泛型类型时,使用类型标识符来表示未知的类型,在使用泛型函数或泛型类型时,为类型标识符传递具体的类型。

二、泛型类型

泛型函数:定义了一个或多个类型形参的函数。

package Study func getLastValue<T> (values: Array<T>) { return values[values.size - 1] } main() { println(getLastValue([1, 2, 3, 4, 5, 6])) }

泛型类

package Study class AreaCode<K, V> { var area: K var code: V init(area: K, code: V) { this.area = area this.code = code } } main() { let cn = AreaCode<String, Int64>("中国", 86) println("地区: ${cn.area}, 区号: ${cn.code}") let els = AreaCode<String, Int64>("俄罗斯", 7) println("地区: ${els.area}, 区号: ${els.code}") }

注意:如果父类是泛型类,子类是非泛型类,在定义子类的时候,必须把父类的每一个泛型变成具体类型。

package Study open class AreaCode<K, V> { var area: K var code: V init(area: K, code: V) { this.area = area this.code = code } } class InternalAreaCode <: AreaCode<String, 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 AreaCode<K, V> { var area: K var code: V init(area: K, code: V) { this.area = area this.code = code } } main() { let hk = AreaCode<String, String>("香港", "00852") println("城市: ${hk.area}, 区号: ${hk.code}") let shanghai = AreaCode<String, String>("上海", "021") println("城市: ${shanghai.area}, 区号: ${shanghai.code}") }

泛型接口

package Study interface USB<T> { func use(value: T): Unit } class Machine <: USB<String> { public override func use(value: String) { println("${value}使用中") } } main() { Machine().use("打印机") }

泛型枚举

package Study enum MyOption<T> { Yes(T) | No public func getOrThrow(): T { match (this) { case Yes(value) => value case No => throw NoneValueException("取值失败") // 抛出异常 } } } main() { let num = MyOption<Int64>.Yes(114514) println(num.getOrThrow()) let none = MyOption<Int64>.No println(none.getOrThrow()) }

三、小结

本章为大家详细的介绍了仓颉编程语言中泛型类型的内容,下一章,为大家带来泛型约束的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 19:00:10

基于Django与Neo4j搭建的中药知识图谱问答系统(含源码+部署指南)

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;一个即装即用的中医药领域问答系统&#xff0c;后端用Django开发&#xff0c;数据层采用Neo4j图数据库存储中药、方剂、证候、药材等实体及它们之间的关联关系。支持自然语言提问&#xff0c;通过语义解析和图谱…

作者头像 李华
网站建设 2026/6/8 18:59:31

鸣潮自动化脚本完全指南:智能后台挂机解放游戏时间

鸣潮自动化脚本完全指南&#xff1a;智能后台挂机解放游戏时间 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 还在为鸣潮游戏中繁…

作者头像 李华
网站建设 2026/6/8 18:53:25

终极指南:如何在旧款Mac上免费升级最新macOS系统

终极指南&#xff1a;如何在旧款Mac上免费升级最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一个革命性的开源工具…

作者头像 李华