我是
Swift的新手,并且正在尝试编写一个符合Equatable的私有枚举.以下是我的代码的简化表示:
- class Baz {
- /* Other members in class Baz */
- private enum Test: Equatable {
- case Foo
- case Bar
- }
- private func == (lhs: Test,rhs: Test) -> Bool {
- //comparison
- }
- }
在“==”方法的行上,编译器抱怨“操作符只允许在全局范围内”.当我将enum Test和“==”方法更改为public时,将“==”移出类,然后错误消失.
任何帮助表示赞赏.
========
编辑:
我在游乐场试过,它对我有用:
- private enum Test: Equatable {
- case Foo
- case Bar
- }
- private func ==(lhs: Test,rhs: Test) -> Bool {
- return true
- }
- class A {
- func aFunc() {
- let test: Test = .Foo
- let test2: Test = .Foo
- if (test == test2) {
- print("Hello world")
- }
- }
- }
- let a = A()
- a.aFunc() // Hello world
你能用你的代码编辑你的问题吗?所以我可以编辑我的答案以适应您的问题.