私はSwiftを初めて使い、Equatableに準拠したプライベート列挙型を作成しようとしていました。ここに私のコードの単純化した表現である:「==」メソッドの行でSwiftのプライベート列挙型の等価メソッドの作成方法
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
あなたの質問を編集することができます。私は、私が遊び場にしようと、それは私の作品私のプライベート列挙型および機能は、上記のクラスで...(コードが更新される)されていることを
私はあなたが持っていることを結論づけた2つの答えを見ています、そして、あなたはグローバルスコープでこれを実装しているとはっきりと仮定していますが、私はあなたのエラーメッセージから、タイプ(例えば、 'クラス ')。おそらくあなたは明らかにすることができます。 – Rob