我創建保存3個浮點值的結構,是否有可能以編程方式添加函數定義在迅速
struct Col {
var r: Float
var g: Float
var b: Float
}
,我想補充一堆等效於內置函數定義數學函數,但在我的結構
我可以自己動手完成它的成員操作分段,例如
func pow(a: Col, b: Col) -> Col {
return Col(r: pow(a.r, b.r), g: pow(a.g, b.g), b: pow(a.b, b.b))
}
但這是繁瑣且容易出錯。
我希望做的是創建一個函數來把原有的數學函數到我中校版,這樣我就可以這樣調用它:
defineColVersion(pow, noArgs: 2)
,它定義了新的版本,不覆蓋內置功能,雙倍運行
有什麼辦法可以在Swift中做到這一點?
感謝
如果我的理解正確,實例方法或類型方法應該適合您的問題。 – Leviathlon
你不能用泛型來做到這一點,泛型也不能解決像這樣的事情。 Swift是一個類型安全的語言,如果這是Javascript,它可以在一秒鐘內解決,但是當您想要在編譯時獲得struct/class的任何成員的引用時,Swift類型檢查,並且您可能很容易理解該類型T(實際上是佔位符)具有(應該有)沒有成員'r','g'或'b'。 – Leviathlon