2014-06-06 76 views
4
let a:Character = "a" // Would not really be a literal in my app... 
let b:Character = "b" // ...but this illustrates the issue 
let compare = a == b 

編譯器抱怨:無法找到接受提供的參數的==的重載。在Swift中比較字符

話雖如此,如果你性格上單擊鼠標右鍵,你可以很容易地找到此聲明

func ==(lhs: Character, rhs: Character) -> Bool 

有什麼建議?我可以通過將字符分配給字符串並進行字符串比較來解決問題,但是我正在遍歷數千個字符。當然有一個迅捷之路。

+1

是,所有的代碼你有嗎?它在操場上適合我。也許重新啓動xcode? – connor

+0

我有類似的問題。似乎Swift一直在考慮將'Character'應用於單字符字符串的'=='運算符實際上是我自定義的完全不同類型的'=='運算符之一,並且抱怨它不能將Character轉換爲我的其他類。聞起來像是一個編譯器bug。 – devios1

回答

4

這實際上應該工作。這是您提供的代碼的輸出。

Code above shown in an Xcode playground

+0

也在我的操場上工作。但不在源代碼文件中。 –

+1

虛驚一場。當我重新啓動Xcode時,問題就消失了。 –

0

這個工程W/O問題:

3> let a: Character = "a" 
a: Character = SmallRepresentation { 
    SmallRepresentation = 9223372036854775649 
} 
    4> let b: Character = "b" 
b: Character = SmallRepresentation { 
    SmallRepresentation = 9223372036854775650 
} 
    5> let compare = (a == b) 
compare: (Bool) = false 
    6> let compare2 = a == b 
compare2: Bool = false 
+0

正確。它在Playground中工作,但不在.swift代碼文件中。 –

+0

它如何在.swift文件中失敗? – GoZoner

+0

見下文。虛驚。但是......一個Q.你使用了哪些環境,哪裏有數字>提示和枚舉詳細信息?我的遊樂場環境看起來像來自Brendan Lim的下面的環境。 –