什麼是當前在Swift中定義顯式轉換的最佳/首選方式?我的頭頂,我可以想到兩個:在Swift中爲自定義類型定義顯式轉換
通過擴展創建目標類型的自定義初始化,就像這樣:
extension String { init(_ myType: MyType) { self = "Some Value" } }
這樣,你可以只使用
String(m)
其中m類型爲MyType
將m轉換爲字符串。定義
toType
- 方法在源類型,如下所示:class MyType { func toString() -> String { return "Some Value" } }
這可比Swift的
String.toInt()
,它返回一個Int?
。但是,如果這是最終的方式,我希望有一些基本類型的協議,例如已有的*LiteralConvertible
協議的反轉。
子問題:這兩種方法都不允許這樣的事情編譯:let s: MyString = myTypeInstance (as String)
(括號內爲選裝件),但如果我的理解對不對,該as
運營商只對類型層次結構中向下轉型,是,正確?
好的,謝謝。包括文檔在內也很好。我認爲爲轉換提供內置類型的擴展也是正確的做法? – Kolja 2014-08-30 19:45:29
是的,當我們添加到第三方類型時,擴展是我們手中的工具。對於我們自己的代碼,這當然只是一個偏好問題。在某些情況下,使用擴展可以幫助保持我們的代碼更有組織性,更易於瀏覽。 – Antonio 2014-08-30 19:49:14
再次感謝。現在我只需要隱式轉換,但是我不會從Swift中獲得。 ;-) – Kolja 2014-08-30 20:21:11