2017-03-18 17 views
3

EqualityClassでEquatableClassを実装しようとしていますが、を表示しようとしていますメンバー演算子 '=='は少なくとも1つの引数 'eqaualityClass'を持つ必要があります .can誰がここで何がうまくいかないか説明していますか?メンバー演算子 '=='は少なくとも1つのタイプの引数を持つ必要があります

protocol Rectangle: Equatable { 

    var width: Double { get } 
    var height: Double { get } 

} 

class eqaualityClass:Rectangle{ 

    internal var width: Double = 0.0 
    internal var height: Double = 0.0 

     static func == <T:Rectangle>(lhs: T, rhs: T) -> Bool { 
      return lhs.width == rhs.width && rhs.height == lhs.height 
    } 
} 
+0

私は、これは、あなたの質問に答えると思います// stackoverflowの。 com/questions/40932230/member-operator-must-have-of-type-viewcontrollerのいずれかの引数) – leanne

答えて

2

あなたのRectangleプロトコルをクラスにする必要があります。このように試してみてください:[メンバ演算子 '%' をタイプの少なくとも1つの引数を持たなければならない 'のViewController'](HTTP::

protocol Rectangle: class, Equatable { 
    var width: Double { get } 
    var height: Double { get } 
} 

class Equality: Rectangle { 
    internal var width: Double = 0 
    internal var height: Double = 0 
    static func ==(lhs: Equality, rhs: Equality) -> Bool { 
     return lhs.width == rhs.width && rhs.height == lhs.height 
    } 
} 

または

protocol Rectangle: class, Equatable { 
    var width: Double { get } 
    var height: Double { get } 
} 

extension Rectangle { 
    static func ==(lhs: Self, rhs: Self) -> Bool { 
     return lhs.width == rhs.width && rhs.height == lhs.height 
    } 
} 

class Equality: Rectangle { 
    internal var width: Double = 0 
    internal var height: Double = 0 
} 
+0

ありがとうございました。クラスキーワードが使われた理由を説明してください。 – adarshaU

+1

これを確認してくださいhttp://stackoverflow.com/a/41970266/2303865 –

関連する問題