瀏覽斯威夫特的庫代碼,我發現:在Swift中擴展所有類型?
extension T! : Printable {
var description: String { get }
}
的片段似乎與「說明」字段延長所有類型。 當我嘗試做同樣的事情在我的代碼,我得到錯誤:
example.swift:10:11: Non-nominal type 'T!' cannot be extended
protocol MyProtocol {
// ...
}
extension T! : MyProtocol { // error: Non-nominal...
// ...
}
有在類似的問題:
- How can I extend typed Arrays in Swift?
- What's the difference between Optional<T> and optional types in Swift? Extending Optional to carry error information?
但他們未能解決:
- 這是怎麼回事?爲什麼庫代碼沒問題,但我的代碼...不是?
- 是否有可能符合特定協議的所有類型或所有類型?
類似的問題(沒有接受答案)在這裏:http://stackoverflow.com/questions/24185549/whats-the-difference-between-optionalt-and-optional-types-in-swift-error-ha。 –
Swift開發人員可以爲自己保留一些*功能。[http://en.wikipedia.org/wiki/Quod_licet_Iovi,_non_licet_bovi]可能存在[某些雙重標準在這裏]。 – dasblinkenlight
你是對的!我想知道爲什麼庫代碼可以工作,但我的代碼不能編譯。 – Andy