相关疑难解决方法(0)

为什么必须将协议运算符实现为全局函数?

我已经看到了这个Swift Equatable Protocol问题的答案,该问题提到了如何==在全局范围内声明该方法.

如果我不采用Equatable,我仍然可以声明==测试我的两种类型之间的相等性.

// extension Foo: Equatable {}

func ==(lhs: Foo, rhs: Foo) -> Bool {
    return lhs.bar == rhs.bar
}

struct Foo {
    let bar:Int
}
Run Code Online (Sandbox Code Playgroud)

它的实现需要在全球范围内声明的事实使得它似乎是偶然的,并且协议不同,即使Equatable被采用.

Equatable协议如何只是语法糖只是让(我们和)编译器安全地知道我们的类型实现了协议所需的方法?

为什么运算符实现必须全局声明,即使对于协议也是如此?这是由于调度操作员的某种不同方式吗?

ios swift equatable

29
推荐指数
3
解决办法
3419
查看次数

标签 统计

equatable ×1

ios ×1

swift ×1