news 2026/6/8 19:11:57

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

作者头像

张小明

前端开发工程师

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

一、练习题

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数组的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

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

缓存命中率:为什么有时候快有时候慢?

缓存命中率:为什么有时候快有时候慢? 同样一台电脑: 打开浏览器飞快 运行某个程序却卡成狗 同样是吃鸡: 帧率飙到144fps 突然掉到60fps 这是为什么?缓存命中率在作怪! 今天我们来深入理解这个"忽快忽慢"的罪魁祸首。 一、什么是缓存命中率? 缓存命中率 = …

作者头像 李华
网站建设 2026/6/8 19:08:08

硬件调试利器:基于JTAG边界扫描的PCB连通性测试实战

1. 项目概述&#xff1a;为什么我们需要边界扫描&#xff1f;在嵌入式硬件开发&#xff0c;尤其是基于复杂SoC&#xff08;如NXP的i.MX8系列&#xff09;的电路板设计调试中&#xff0c;最让人头疼的环节之一就是板级硬件验证。板子贴片回来&#xff0c;上电后串口没打印、某个…

作者头像 李华
网站建设 2026/6/8 19:07:33

UKI.js快速入门教程:如何用JSON构建复杂Web界面

UKI.js快速入门教程&#xff1a;如何用JSON构建复杂Web界面 【免费下载链接】uki Simple UiKit for complex web apps 项目地址: https://gitcode.com/gh_mirrors/uk/uki 你是否厌倦了编写冗长的HTML和CSS代码来构建Web界面&#xff1f;想要一种更简单、更直观的方式来创…

作者头像 李华
网站建设 2026/6/8 19:06:52

东方博宜OJ 1010:数组元素的排序 ← 桶排序

【题目来源】 https://oj.czos.cn/p/1010 【题目描述】 对数组的元素按从小到大进行排序。 【输入格式】 第一行有一个整数 n&#xff08;5≤n≤10&#xff09;&#xff1b; 第二行有 n 个整数&#xff0c;每个整数的值在 [0, 10^9]的范围内。 【输出格式】 输出排序后的数组…

作者头像 李华
网站建设 2026/6/8 19:04:29

3个关键步骤让老旧Mac焕发新生:OpenCore Legacy Patcher实战指南

3个关键步骤让老旧Mac焕发新生&#xff1a;OpenCore Legacy Patcher实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否曾为手中的Mac设备感到惋惜…

作者头像 李华