4
我喜歡C#的一件事是你可以爲你的類定義隱式轉換器。例如,我創建了一個VectorGeometryBuilder
類,它具有類似於MoveForwardByX
,TurnByYDegrees
,LineToPoint
等的方法。然後它定義了對類的隱式轉換。這使我能夠用我的漂亮生成器來創建我的幾何體,然後只是通過整個套件正堆一起到任何函數期待一個Geometry
,即使VectorGeometryBuilder
本身不的Geometry.
一個子類,相反,它暴露了一個Geometry
對象一個屬性,隱式轉換器抓取並返回。在Swift中可以爲你的類類型創建隱式轉換嗎?
我想知道的是,如果Swift有類似的東西。
考慮這個虛構的場景......
class FauxInt
{
init(_ initialValue:Int)
{
value = initialValue
}
var value:Int
}
let fauxInt = FauxInt(14)
這些都是樣的東西,我想能夠做到......
let realInt:Int = fauxInt
someFuncTakingAnInt(someInt:fauxInt)
再次,轉換Int
應該是隱含的含義,在任何期待Int
的地方,我可以使用或通過FauxInt
來代替。
有什麼辦法可以使上述可能?
呀,不太相同。雖然我很欣賞可以在這裏做什麼,如果你正在「轉換」一個新的初始化器的對象已經公開了一個int屬性,最有可能代替這個... someFuncTakingInt(Int(fauxInt))...我會可能只是寫這個... someFuncTakingInt(fauxInt.value)。換句話說,沒有隱式轉換的能力,至少在這種情況下,這確實不會增加太多。不過,投票你,因爲在其他情況下,這將是一個非常有用的提示,並遵循Swift標準。 – MarqueIV