1
爲什麼這個函數不能編譯?抱怨是:二元運算符'==='不能用於I.Type和T.Type類型的操作數。編譯器不會讓我比較類型
func checkTypeOf<I, T>(instance: I, type: T.Type) {
print("\(instance) \(I.self === type ? "is" : "is not") a \(type)")
}
相反,這裏是編譯並運行了一個例子:
class Dog {
@objc static var whatADogSays : String = "woof"
}
class NoisyDog : Dog {
}
func typeTester(d:Dog, _ whattype:Dog.Type) {
print("The \(d.dynamicType) \(d.dynamicType === whattype ? "is" : "is not") a \(whattype)")
}
typeTester(NoisyDog(), Dog.self)
這聽起來並不正確。查看我添加到我的問題中的對比例。 – Verticon
等一下;現在我懂了。如果沒有AnyObject約束,T和I可以是結構或枚舉;無法應用===運算符。 – Verticon
非常適合你!你能提出答案嗎? – mohamede1945