protocol P1 {
func doP1()
}
protocol P2 {
func doP2()
}
class B {
}
class D : B, P1, P2 {
func doP2() {}
func doP1() {}
}
let s = D()
print(type(of:(D() as P1)))
print(type(of:(D() as B)))
print(type(of:[D(), D()] as [P1]))
所以,當我跑,我得到:用「as」快速上傳,發生了什麼?
D
D
Array<P1>
好了,我可是從C++的世界即將到來。我想第一行會給我一個P1類型,第二行會給我一個B類型,第三行會給我一個P1數組。所以我得到了P1的數組,但是與第一行似乎不一致,它指出它的確是D而不是P1。那麼是什麼給了?顯然,我不明白Swift的這個角落。當你上傳時,不應該忽視這種類型的信息嗎?編譯器是否太聰明,因爲它真的知道類型?
好的,謝謝馬特(和Ewan)。是的,第三種情況(數組)是什麼讓我失望,所以感謝編輯清除了。 – DavidN