Mojo泛型结构体MyPair编译报错:'type'未实现__lt__方法求解决
Mojo代码编译错误排查:'type'未实现__lt__方法
错误原因
你的MyPair是泛型结构体,泛型参数type声明为AnyType,但编译器无法保证所有AnyType类型都支持<、==这类比较操作,所以在__lt__方法中执行self.first < rhs.first时触发错误。
解决方法
给泛型参数type添加**Comparable trait约束**,明确要求该类型必须支持比较操作。
修改后的完整代码
struct MyPair[type: Comparable]: var first: type var second: type fn __init__(inout self, first: type, second: type): self.first = first self.second = second fn __lt__(self, rhs: MyPair[type]) -> Bool: return self.first < rhs.first or (self.first == rhs.first and self.second < rhs.second) fn __copyinit__(inout self, other: MyPair[type]): self.first = other.first self.second = other.second def pairTest() -> Bool: let p = MyPair[Int](1, 2) let q = MyPair[Int](3, 4) return p < q
验证结果
修改后代码可正常编译运行,pairTest()返回True,符合预期逻辑。
内容的提问来源于stack exchange,提问作者qpit3a
相关产品推荐
相关产品推荐

