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

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

一、练习题

1. 定义一个三角形类,实现Equatable<T>接口,如果两个三角形的对应三边相等,则证明这两个三角形全等,否则这两个三角形不全等。

package Study class Triangle <: Equatable<Triangle> { Triangle(var side1: Int64, var side2: Int64, var side3: Int64) {} private func isSidesEqual(triangle: Triangle) { let flag1 = this.side1 == triangle.side1 || this.side1 == triangle.side2 || this.side1 == triangle.side3 let flag2 = this.side2 == triangle.side1 || this.side2 == triangle.side2 || this.side2 == triangle.side3 let flag3 = this.side3 == triangle.side1 || this.side3 == triangle.side2 || this.side3 == triangle.side3 if (flag1 == true && flag2 == true && flag3 == true) { true } else { false } } public override operator func ==(triangle: Triangle) { this.isSidesEqual(triangle) == triangle.isSidesEqual(this) } public override operator func !=(triangle: Triangle) { this.isSidesEqual(triangle) != triangle.isSidesEqual(this) } } main() { let triangle1 = Triangle(3, 4, 5) let triangle2 = Triangle(4, 3, 5) let triangle3 = Triangle(4, 4, 4) println(triangle1 == triangle2) println(triangle2 == triangle3) println(triangle1 != triangle2) }

2. 定义泛型枚举,使用泛型约束,解构Color枚举的值。

package Study enum Color<T> where T <: ToString { Red(T) | Blue(T) | Green(T) | Gray(T) | Pink(T) | Black(T) func getColor() { match (this) { case Red(value) => println("${value}") case Blue(value) => println("${value}") case Green(value) => println("${value}") case Gray(value) => println("${value}") case Pink(value) => println("${value}") case Black(value) => println("${value}") } } } main() { let red = Color.Red("红色") red.getColor() let pink = Color.Pink("粉色") pink.getColor() let black = Color.Black(0x000000) black.getColor() }

3. 定义一个坐标点类(Point),坐标的描述可以用实数描述,也可以用字符串描述。

package Study class Point<T> where T <: ToString { Point(private var _x: T, private var _y: T) {} mut prop x: T { get() { this._x } set(_x) { this._x = _x } } mut prop y: T { get() { this._y } set(_y) { this._y = _y } } func getPoint() { println("X坐标: ${this._x}, Y坐标: ${this._y}") } } main() { let point1 = Point<String>("东经100°" , "北纬20°") point1.getPoint() let point2 = Point<Float64>(34.6, 78.9) point2.getPoint() }

二、小结

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

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

相关文章:

  • 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
  • 抖音批量下载终极指南:免费无水印下载工具完整教程
  • 看懂这3个经营分析指标,再去开经营分析会
  • 2026 杭州余杭区高端首饰回收实力测评,6 家专业门店鉴定流程与报价揭秘 - 奢侈品回收评测
  • 告别双系统折腾:保姆级教程,用WSL2+PyCharm在Windows上跑通CUDA深度学习
  • 抖音无水印下载终极指南:三步掌握douyin-downloader高效技巧
  • [特殊字符] 书匠策AI:把期刊论文写作变成“放风筝“的全新体验
  • 《人工智能概论》实验6 知识点复习提纲
  • 终极实战:深度解析OpCore-Simplify如何实现OpenCore EFI配置的完全自动化