【问题标题】:Why are there no operator overloads in SceneKit?为什么 SceneKit 中没有运算符重载?
【发布时间】:2017-12-06 00:50:36
【问题描述】:

在我看来,为SCNMatrix4SCNVector3 等类型的运算符添加重载似乎是一个显而易见的想法,但Apple 似乎选择使用静态全局函数(例如SCNMatrix4Mult)。虽然矩阵乘法和向量加法等运算符的添加很简单,但我想知道:

示例实现:

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)
}

【问题讨论】:

    标签: swift operator-overloading scenekit


    【解决方案1】:

    这些函数是为 Objective-C 编写的 SceneKit 实用程序,可以简单地按原样导出到 Swift。我同意将它们作为运算符而不是全局函数会很好,但看起来相关代码尚未编写。

    请注意,如果您希望代码更具表现力和效率,您可以轻松利用SCNNode 上基于 SIMD 的新 API。您可以在 related SO question 中找到一个示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 2011-01-21
      相关资源
      最近更新 更多