swift - 为什么 SceneKit 中没有运算符重载?

标签 swift operator-overloading scenekit

对我来说,为 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)
}

最佳答案

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

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

关于swift - 为什么 SceneKit 中没有运算符重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44873927/

相关文章:

swift - Swift中使用Arkit识别图片时如何播放本地视频?

ios - 如果我使用 UITableViewAutomaticDimension,如何增加单元格的高度?

ios - UITableview 的动态高度

c++ - 创建具有多态性和 op 的模板。 C++中的重载

ios - 在 3D 模型的 Xcode 7.2 编辑器中出现问题

黑色背景上的 Scenekit 透明度

ios - AudioKit 4.1 - 如何正确停止 AKSampler 播放音频?

ios - 折叠隐藏的 UIButton

python - 在 QStandardItem 中重载了 "<"运算符,但它没有被调用

c++ - 如何用链表重载运算符<<?