簡體   English   中英

Swift類型符合Any

[英]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當前不支持。

https://nomothetis.svbtle.com/type-variance-in-swift

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM