gpt4 book ai didi

ios - Swift 的 equatable 协议(protocol)一致性检查

转载 作者:搜寻专家 更新时间:2023-10-30 22:36:26 26 4
gpt4 key购买 nike

我正在尝试扩展 Swift 的 Array具有以下功能的类:

func containsObjectIdenticalTo(obj: T) -> Bool {
// objectPassingTest returns the first object passing the test
return objectPassingTest { x in x == obj }
}

显然,这不会编译,因为编译器还不知道 == 是否存在。为 T 类型实现.然后我将代码更改为这个

func containsObjectIdenticalTo(obj: T) -> Bool {
return objectPassingTest {
x in
assert(x is Equatable && obj is Equatable)
return (x as Equatable) == (obj as Equatable)
} != nil
}

这也不起作用,因为符合 Equatable无法检查(因为 Equatable 没有用 @obj 定义)!

对此有什么想法吗?如果 T 有某种方法可以直接断言,那就太好了符合 Equatable ,但我没有在任何地方读过。在这些方面,Swift 似乎不如 Obj-C 动态。

更新:尝试了这个建议,但它不起作用(不知道 <T: Equatable> 的确切用途,但它确实可以编译)。

func containsObjectIdenticalTo<T: Equatable>(obj: T) -> Bool {
var x = self[0]
var y = self[0]
return x == y // Error here
}

最佳答案

在方法的签名中指定 T 必须是相等的:

func containsObjectIdenticalTo<T: Equatable>(obj: T) -> Bool {/*...*/}

关于ios - Swift 的 equatable 协议(protocol)一致性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24174697/

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