跟我一起学“仓颉”编程语言-泛型约束
一、泛型约束泛型约束是指为类型形参添加的约束主要通过子类型约束来实现的。package Study func funT(value: T) where T : ToString { println(value) } main() { funString(我叫钝子生) funInt64(114514) }注意通过where表达式来约束泛型T必须是ToString的子类。泛型接口EqualtableTpackage Study class Square : EquatableSquare { 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) }泛型接口ComparableTpackage Study class Square : ComparableSquare { 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(男人.年龄) }三、小结本章为大家详细的介绍了仓颉编程语言中泛型约束的内容下一章为大家带来泛型练习题的内容。最后创作不易如果大家觉得我的文章对学习仓颉服务端开发有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家