泛型 – 符合Swift中Comparable的泛型类

泛型 – 符合Swift中Comparable的泛型类,第1张

概述我正在尝试创建一个符合Comparable协议的简单通用节点类,以便我可以轻松地比较节点而无需访问其密钥.当我试图写<和==函数,但是,编译器似乎不喜欢它. <和==函数在定义Node参数时需要一个类型.这在Java中很简单,你定义了相等性和<在课堂内部.斯威夫特在全球范围内要求它.有什么想法吗 ? 例: func < (lhs:Node<E:Comparable>, rhs:Node<E:Com 我正在尝试创建一个符合Comparable协议的简单通用节点类,以便我可以轻松地比较节点而无需访问其密钥.当我试图写<和==函数,但是,编译器似乎不喜欢它. <和==函数在定义Node参数时需要一个类型.这在Java中很简单,你定义了相等性和<在课堂内部.斯威夫特在全球范围内要求它.有什么想法吗 ? 例:
func < (lhs:Node<E:Comparable>,rhs:Node<E:Comparable>) -> Bool {    return lhs.key < rhs.key}func == (lhs:Node<E:Comparable>,rhs:Node<E:Comparable>) -> Bool {    return lhs.key == rhs.key}class Node<D:Comparable>: Comparable {    var key: D!    var next:Node?    var prev:Node?    init( key:D ) {        self.key = key    }}
你很亲密! Node类已经指定对于Node< D>,D必须符合Comparable.因此,Node< E:Comparable>在==和<的decl中是多余的.相反,您希望限制可以调用运算符的类型:
func < <E: Comparable>(lhs: Node<E>,rhs: Node<E>) -> Bool {    return lhs.key < rhs.key}func == <E: Comparable>(lhs: Node<E>,rhs: Node<E>) -> Bool {    return lhs.key == rhs.key}class Node<D: Comparable>: Comparable {    var key: D!    var next: Node?    var prev: Node?    init(key: D) {        self.key = key    }}
总结

以上是内存溢出为你收集整理的泛型 – 符合Swift中Comparable的泛型类全部内容,希望文章能够帮你解决泛型 – 符合Swift中Comparable的泛型类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1051185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存