0
一個更具體的I型做一個協議:低迷現狀任何在迅速
protocol TestProtocol {
func test() -> Int
}
和我延伸INT和可選符合的協議:
extension Int: TestProtocol {
func test() -> Int {
return 1
}
}
extension Optional where Wrapped: TestProtocol {
func test() -> Int {
switch self {
case let value?:
return value.test()
default:
return 0
}
}
}
我還可以延伸字符串,雙和其他類型符合這個協議。
如果我給了特定類型的變量,它的工作原理確定:
let fff: Int? = 2
print(fff.test())
但是,如果變量類型是任何:
let kkk: Any = fff
print(kkk.test())
如何檢查KKK的真實類型符合的協議TestProtocol並獲得結果。
在這個例子中,'Optional'不符合'TestProtocol'。當'Optional'包裝符合的東西時,它有一個'test()'方法,但這對於'Optional'本身來說是不夠的。 Swift中沒有條件一致性。你不能說「如果它們的元素是可平衡的,則數組是可平衡的」。有關更多信息,請參閱https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md#conditional-conformances-。 –
謝謝!你解決了我的問題! – leizh00701