gpt4 book ai didi

swift - 具有关联类型的泛型结构实现协议(protocol)

转载 作者:行者123 更新时间:2023-11-28 15:16:09 25 4
gpt4 key购买 nike

我在尝试为我的 ui 元素定义容器时遇到了一些困难。

因为我想要封装一个非唯一标签的东西,一个可以是任何可比较对象的值和一个成为首选选项的概念,我想出了以下协议(protocol):

protocol OptionProtocol:Comparable {
associatedtype Key:Comparable
associatedtype Value:Comparable

var key:Key { get set }
var value:Value { get set }
var main:Bool { get set }

static func <(lhs: Self, rhs: Self) -> Bool

static func ==(lhs: Self, rhs: Self) -> Bool

}

extension OptionProtocol {
static func <(lhs: Self, rhs: Self) -> Bool {
let equalKeys = lhs.key == rhs.key
return equalKeys ? lhs.value < rhs.value : lhs.key < rhs.key
}

static func ==(lhs: Self, rhs: Self) -> Bool{
return (lhs.value == rhs.value) && (lhs.key == rhs.key)
}
}

现在我想在通用结构中实现该协议(protocol),但我不知道该怎么做。我想做的是

struct Option<Key, Value>: OptionProtocol  {
var key:Key
var value:Value
var main:Bool
}

但是编译器提示 Type 'Option<Key, Value>' does not conform to protocol 'OptionProtocol'

任何指针都会有帮助

最佳答案

答案很简单。我需要在结构中约束 Key 和 Value。以下结构按预期编译

struct Option<Key, Value>:OptionProtocol where Key:Comparable, Value:Comparable {
var key:Key
var value:Value
var main:Bool
}

关于swift - 具有关联类型的泛型结构实现协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46844220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com