首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift Equatable协议

Swift Equatable协议
EN

Stack Overflow用户
提问于 2014-06-28 22:47:55
回答 2查看 24.9K关注 0票数 85

我在遵循Swift:https://www.raywenderlich.com/125311/make-game-like-candy-crush-spritekit-swift-part-1的教程,偶然发现了这段代码:

代码语言:javascript
复制
func == (lhs: Cookie, rhs: Cookie) -> Bool {
    return lhs.column == rhs.column && lhs.row == rhs.row
}

我就是这么写的,但是Xcode给了我这些错误:

代码语言:javascript
复制
Consecutive declarations on a line must be separated by ';'
Expected declaration operators are only allowed at global scope

我在苹果的文档中找到了下面的代码:https://developer.apple.com/documentation/swift/equatable

这和我写的很相似。怎么了?对我来说,这似乎是个bug。我使用的是Xcode 6 Beta 2

编辑:

这是我的整个Cookie类:

代码语言:javascript
复制
class Cookie: Printable, Hashable {
    var column: Int
    var row: Int
    let cookieType: CookieType
    let sprite: SKSpriteNode?
    
    init(column: Int, row: Int, cookieType: CookieType) {
        self.column = column
        self.row = row
        self.cookieType = cookieType
    }
    
    var description: String {
        return "type:\(cookieType) square:(\(column),\(row))"
    }
    
    var hashValue: Int {
        return row * 10 + column
    }
    
    func ==(lhs: Cookie, rhs: Cookie) -> Bool {
        return lhs.column == rhs.column && lhs.row == rhs.row
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-28 22:58:51

移动此函数

代码语言:javascript
复制
func == (lhs: Cookie, rhs: Cookie) -> Bool {
    return lhs.column == rhs.column && lhs.row == rhs.row
}

在cookie类之外。这样做是有意义的,因为当在两个Cookie上使用时,它覆盖了全局范围内的==操作符。

票数 145
EN

Stack Overflow用户

发布于 2015-09-06 20:58:12

让类成为NSObject为我解决了等价性问题……

代码语言:javascript
复制
class Cookie: NSObject {
...
}

(从iOS apprentice教程获得提示)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24467960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档