相关疑难解决方法(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
查看次数

Swift 2.2中'Generic'与协议'Equatable'的冗余一致性

编译时我在Equatable中出错.我想在列表中添加find或contains方法来检查值. 我的代码如下

class Generic: NSObject, Equatable, NSCoding //Am Having an error -  Redundant conformance of 'Generic' to protocol 'Equatable'

{

  var genericCode: String?
  var genericName : String?
  var genericType : String?
  var genericImageUrl : String?
  var genericPhone: String?
  var orgName : String?

override init()
{

    self.genericCode = String("")
    self.genericName = String("")
    self.genericType = String("")
    self.genericImageUrl = String("")
    self.genericPhone = String("")
    self.orgName = String("")

}

//Parameterzed Constructor for the Generic
init(genericCode: String , genericName: String , genericPhone: String, genericType: String, genericImageUrl …
Run Code Online (Sandbox Code Playgroud)

protocols swift equatable

7
推荐指数
2
解决办法
5270
查看次数

标签 统计

equatable ×2

swift ×2

ios ×1

protocols ×1