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