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

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

一、泛型约束

泛型约束是指为类型形参添加的约束,主要通过子类型约束来实现的。

package Study func fun<T>(value: T) where T <: ToString { println(value) } main() { fun<String>("我叫钝子生") fun<Int64>(114514) }

注意:通过where表达式来约束泛型T必须是ToString的子类。

泛型接口Equaltable<T>

package Study class Square <: Equatable<Square> { Square(var length: Int64){} func getArea() { this.length ** 2 } // 面积相等 两个正方形一样 public operator func ==(square: Square) { this.getArea() == square.getArea() } // 面积不相等 两个正方形不一样 public operator func !=(square: Square) { this.getArea() != square.getArea() } } main() { let square1 = Square(4) let square2 = Square(4) let square3 = Square(5) println(square1 == square2) println(square1 == square3) println(square2 != square3) }

泛型接口Comparable<T>

package Study class Square <: Comparable<Square> { Square(var length: Int64){} func getArea() { this.length ** 2 } // 面积相等 两个正方形一样 public operator func ==(square: Square) { this.getArea() == square.getArea() } // 面积不相等 两个正方形不一样 public operator func !=(square: Square) { this.getArea() != square.getArea() } public operator func <(square: Square) { this.getArea() < square.getArea() } public operator func <=(square: Square) { this.getArea() <= square.getArea() } public operator func >(square: Square) { this.getArea() > square.getArea() } public operator func >=(square: Square) { this.getArea() >= square.getArea() } public func compare(square: Square) { if (this > square) { Ordering.GT } else if (this < square) { Ordering.LT } else { Ordering.EQ } } } main() { let square1 = Square(4) let square2 = Square(4) let square3 = Square(5) println(square1 == square2) println(square1 >= square3) println(square2 < square3) match (square1.compare(square3)) { case Ordering.GT => println("大于") case Ordering.LT => println("小于") case Ordering.EQ => println("等于") } }

二、类型别名

类型别名只能定义在全局作用域。

package Study type 短整型 = Int8 type 整型 = Int16 type 中整型 = Int32 type 长整型 = Int64 type 字符串 = String type 人类 = Person class Person { Person(var 姓名: 字符串, var 年龄: 整型){} } main() { let 男人 = 人类("钝子生", 23) println(男人.姓名) println(男人.年龄) }

三、小结

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

http://www.gsyq.cn/news/1488118.html

相关文章:

  • 2026 杭州余杭区翡翠回收五星测评,8 家门店实地走访,教你理性处理闲置首饰 - 奢侈品回收评测
  • 基于EdgeLock安全元件实现充电桩ISO 15118与OCPP 2.0.1安全合规方案
  • 要在 LabVIEW 中灵活地发送和接收 SECS/GEM 消息,避免频繁修改 C# 代码,需要设计一个通用的接口,将消息的构造和解析逻辑从 C# 移到 LabVIEW
  • 惠普游戏本性能控制终极指南:3个简单步骤完全掌控你的设备
  • PyWren完全指南:如何利用云服务实现高效并行计算
  • Vazirmatn字体深度解析:3个关键步骤让波斯语设计更专业
  • 跟我一起学“仓颉”编程语言-泛型练习题
  • 5步实战指南:如何为novel-downloader添加新的小说网站支持
  • Mythos能力门控解析:大模型推理深度与多文档验证的工程化落地
  • 寄快递上门取件,哪个最便宜?2026实测对比 - 快递物流资讯
  • GetQzonehistory:5分钟永久备份QQ空间所有历史记忆的终极方案
  • 厌倦了单调的macOS光标?用Mousecape打造个性化桌面体验的3个实用场景
  • 深入Keil C51:巧用data、xdata和code关键字优化你的51单片机项目内存
  • Rufus:免费USB启动盘制作神器,3分钟搞定Windows 11安装
  • 探索Video2X:AI视频超分辨率与帧插值的深度实践指南
  • 解锁鼠标潜能:Mac Mouse Fix如何让普通鼠标超越苹果触控板
  • WiVRn日志分析:调试与解决流式传输问题的实用技巧
  • 跟我一起学“仓颉”编程语言-Array数组
  • ASP+Access实现的浏览器可用人事管理系统(含论文文档与答辩PPT)
  • 终极鼠标性能解放:Mac Mouse Fix 如何让你的10美元鼠标超越苹果触控板
  • 告别繁琐接线:KMS-4-WF无线模块+3D打印外壳,打造你的桌面物理快捷键
  • 大模型落地难?知识工程才是AI价值上限的“金钥匙”!| 企业必读
  • 2026年C语言就业真的很差吗?现在学习还可以找到好工作吗?
  • Birdtray未来路线图:Wayland支持、新功能规划和社区发展展望
  • 石家庄闲置名包回收,2026这五家机构谁更靠谱? - 奢侈品回收测评
  • 2026年6月智慧泵房直销厂家推荐,一体化智慧泵房/潜水排污泵/一体化加压泵站/控制柜,智慧泵房源头厂家哪家靠谱 - 品牌推荐师
  • 抖音下载神器:一键批量下载无水印视频的终极指南
  • 2026广州包包回收!5家门店横向测评 专业实力排行榜 - 奢侈品回收评测
  • 国内冲压拉伸油核心生产厂家综合实力排行 - 奔跑123
  • 抖音批量下载终极指南:免费无水印下载工具完整教程