1
我是新來的斯威夫特。我發現了標匹配的一些怪異的行爲:如何在Swift 3.1中使用字符下標?
struct SubscriptTest {
subscript(character: Character) -> String {
return "Character: \(character)"
}
subscript(string: String) -> String {
return "String: \(string)"
}
subscript(int: Int) -> String {
return "Int: \(int)"
}
}
let test = SubscriptTest()
test["abc"] // String: abc
test[13] // Int: 13
test[""] // String: (surprisingly)
我想最後的測試將匹配我的Character
下標,而不是String
之一。我試圖交換下標聲明的順序,認爲可能是最後一個匹配的聲明被使用。它沒有改變任何東西,String
下標仍然用於單個Character
。
我知道我只能使用String
下標並檢查字符數,但我的問題的根源是好奇心。
爲什麼Character
下標在這裏永遠不會匹配?
那麼在Swift中是否有類型優先級? –
@RoboRobok:文字有一個默認類型。 '123'可以是'Int'或'Float'或'Double'或'UInt64'或...。如果沒有其他內容可以從上下文中推斷出來,它將被視爲「Int」。 –
我愛Swift越來越多:) –