首页 > 解决方案 > renderer(_:didAdd:for:) 方法中的全局和局部参数名称

问题描述

我们总是在 SceneKit 方法中使用本地参数名称(节点锚点),例如:

optional func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)

在什么情况下可以使用全局参数名称didAddfor ?

标签: objective-cswiftscenekitarkit

解决方案


此模式遵循Swift API 设计指南

可能需要更多的词来阐明意图或消除歧义,但那些与读者已经掌握的信息多余的词应该省略。特别是,省略仅重复类型信息的单词。

而 Objective-C API 是:

- (void)renderer:(id<SCNSceneRenderer>)renderer 
      didAddNode:(SCNNode *)node 
       forAnchor:(ARAnchor *)anchor;

它被翻译成 Swift 为:

optional func renderer(_ renderer: SCNSceneRenderer, 
                didAdd node: SCNNode, 
                   for anchor: ARAnchor)

大概调用者知道参数的类型,因此省略了类型信息。

这也是 Objective-C 方法自动翻译成 Swift 的方式;请参阅从 C 到 Swift 的名称翻译省略-needless-words


推荐阅读