当前位置: 首页 > news >正文

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

一、泛型

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

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

二、泛型类型

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

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

三、小结

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

http://www.jsqmd.com/news/976434/

相关文章:

  • 2026消协参考名录,广州合规名表回收门店公示,禹竞成首选 - 禹竞
  • 江镇买房必看!从毛坯到精装,我的全屋设计思路 + 靠谱团队推荐 - 地大物博的游客
  • 上海名表变现实操指南 市场行情与正规回收机构盘点 - 开心测评
  • 太原黄金回收前三名实测:金裕恒黄金回收登顶口碑榜 - 润富黄金回收
  • 微信小程序商城需要多少钱
  • 素数的学习
  • 如何使用PHAR Utils快速创建可重现的PHAR包:Timestamps类完整指南
  • 天津艺术生中考择校排行:5所优质特色高中实力盘点 - 奔跑123
  • 别再手动改销售单了!SAP SD客户物料主数据VD51配置详解(附销售订单自动带出技巧)
  • 2026 西安靠谱全屋刷新服务中心推荐榜|4 家优质修缮企业盘点 - 冠盾建筑修缮
  • 如何让经典IPX游戏在现代Windows系统重生:IPXWrapper完整指南
  • 060、色彩管理系统设计:sRGB、DCI-P3、Display P3 色域映射与 Gamut 裁剪
  • 解决90%常见问题:openai_gpt部署与使用故障排除终极指南
  • 2026 西安墙面维修门店哪家靠谱 TOP4:陕西冠盾领衔专业修缮榜 - 冠盾建筑修缮
  • Python之abing包语法、参数和实际应用案例
  • 别再只盯着Shiro-550/721了:聊聊Logback JNDI注入(CVE-2019-14439)在CTF和实战中的新花样
  • 2026年金华市CPPM考试最新全攻略:科目题型、通过率、备考重点及官方双认证报考机构推荐 - 众智商学院课程中心
  • 实验室/工业/防爆/电子/分析天平源头直供:万泰定制化服务与交期优势 - 品牌推荐大师
  • 虚拟 DOM
  • 从零落地全周期管理!三步搭建轻量化设备精益运维体系
  • 掌握SPT-AKI存档编辑器:从问题诊断到高级定制的完全指南
  • 物联网技术发展里程碑梳理(截至 2026 年)
  • 手把手教你用draw.io(diagrams.net)画高颜值技术配图,提升文章和文档逼格
  • 北京朝阳/东城区黄金回收全攻略:从检测到打款,这三点必须盯紧 - 奢侈品回收测评
  • Node-Influx 在企业级应用中的应用:监控、日志分析和物联网数据处理
  • 机器人自主导航终极指南:RTAB-Map环境感知与3D建图实战解密
  • 如何让大语言模型在普通电脑上流畅运行:通义千问Qwen模型优化指南
  • AI Overviews时代:Google搜索流量的重新分配与应对策略
  • EMO-Ai-7b-Q8_0-GGUF部署实战:从Docker到云服务的全面指南
  • Mermaid Live Editor:5分钟掌握实时图表编辑的终极指南