一尘不染

快速平等协议

swift

我正在为Swift 编写本教程:https : //www.raywenderlich.com/125311/make-
game-like-candy-crush-spritekit-swift-
part-1并遇到以下代码:

func == (lhs: Cookie, rhs: Cookie) -> Bool {
    return lhs.column == rhs.column && lhs.row == rhs.row
}

我正是这样写的,但是Xcode给了我这些错误:

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

这与我写的非常相似。怎么了?对我来说,这似乎是一个错误。我正在使用Xcode 6 Beta 2

编辑:

这是我的整个Cookie课:

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
    }
}

阅读 189

收藏
2020-07-07

共1个答案

一尘不染

移动此功能

func == (lhs: Cookie, rhs: Cookie) -> Bool {
    return lhs.column == rhs.column && lhs.row == rhs.row
}

在Cookie类之外。这种方式很有意义,因为在两个Cookie上使用时,它会在全局范围内覆盖==运算符。

2020-07-07