2016-04-08 25 views
4

ile jenerik enum karşılaştırılması ben şöyle bir sonuç enum ve hata var:ilişkili tip

class ResultSpec: QuickSpec { 
    override func spec() { 

    describe("Result") { 

     context("when comparing 2 success results") { 

     it("returns true") { 
      let equal = Result.Success(5) == Result.Success(5) 
      expect(equal).to(beTrue()) 
     } 

     } 

     context("when comparing 2 error results") { 

     it("returns true") { 
      let error = NSError(domain: "", code: 0, userInfo: nil) 
      let requestError = RequestError(error)! 
      let equal = Result.Error(requestError) == Result.Error(requestError) 
      expect(equal).to(beTrue()) 
     } 

     } 

    } 

    } 
} 

Başarıyı kontrol eden ilk test geçer. İkincisi ise hata ile derleme değil: İnanıyorum

let equal = Result.Error(requestError) == Result.Error(requestError) 

cevap

2

:

İkili operatör '==' ikiye uygulanamaz işlenen bu hat üzerinde

'< _> Sonuca' derleyici, jenerik Result enum == işleminin hangi tür kullanıldığını bilmediğini söylüyor. Bu satırı, burada hiçbir rol oynamayan tipte herhangi bir doğrudan tip belirtimiyle değiştirebilirsiniz. Bunun gibi:

let equal = Result<String>.Error(requestError) == Result<String>.Error(requestError)