[英]Swift type conformance to Any
除了功能之外,所有迅速的類型都符合Any
嗎? 我知道AnyObject
代表所有類類型,而Any
處於更高的級別,代表所有其他類型。 但是,最近我遇到了一種情況,其中有一個函數看起來像:
func myFunFunction(someArgument: Any) {
...
}
當使用String
參數調用它時: myFunFunction("This is a string")
我收到一條錯誤消息,指出不能將String
類型轉換為Any
類型。
編輯:
上面的例子就是一個例子。 我想簡化代碼以獲得答案,但這是我的實際代碼:
我有一個類的final class CollectionViewBinder: NSObject, UICollectionViewDataSource, UICollectionViewDelegate { }
,用作ReactiveCocoa的集合視圖綁定幫助程序。
初始化方法:
init(collectionView: UICollectionView, dataSignal: SignalProducer<[[Any]], NoError>, supplementarySignal: SignalProducer<[[Any]], NoError>?) { ... }
如果dataSignal
的類型為SignalProducer<[[String]], NoError>
,那就是當我收到錯誤消息,指出類型SignalProducer<[[String]], NoError>
無法轉換為SignalProducer<[[Any]], NoError>
會讓我認為我的錯誤可能與ReactiveCocoa有關?
您對Any
沒錯,Apple文檔說:
Any可以代表任何類型的實例,包括函數類型。
您提供的示例對我來說毫無問題。 通常在這種情況下,錯誤會出現在其他位置,但是編譯器會給出誤導性消息。
您所期望的稱為“通用協方差”,Swift當前不支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.