我正在尝试Array
通过以下功能扩展Swift的类:
func containsObjectIdenticalTo(obj: T) -> Bool {
// objectPassingTest returns the first object passing the test
return objectPassingTest { x in x == obj }
}
显然,这不会编译,因为编译器尚不知道是否==
为type实现了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 {/*...*/}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句