2017-07-02 75 views
2

對於我來說,似乎很明顯地想爲運營商增加超載,例如SCNMatrix4SCNVector3,但Apple似乎選擇使用靜態全局函數(如SCNMatrix4Mult)。儘管像矩陣乘法和向量加法這樣的操作符是微不足道的,但我想知道:爲什麼在SceneKit中沒有運算符重載?

實施例實現:

func * (left: SCNMatrix4, right: SCNMatrix4) -> SCNMatrix4 { 
    return SCNMatrix4Mult(left, right) 
} 

func + (left: SCNVector3, right: SCNVector3) -> SCNVector3 { 
    return SCNVector3Make(left.x + right.x, left.y + right.y, left.z + right.z) 
} 

回答

1

這些功能是用於Objective-C的寫入SceneKit utils的,簡單地得到出口夫特原樣。我同意將它們作爲運算符而不是全局函數會很好,但是看起來相關的代碼還沒有寫入。

請注意,如果您希望自己的代碼更富有表現力和更高效,那麼您可以輕鬆利用SCNNode上的新的基於SIMD的API。你可以在這個related SO question找到一個例子。