renderer(_:didAdd:for:) 方法中的全局和局部参数名称

Global and local argument names in renderer(_:didAdd:for:) method

我们总是使用局部参数名称(nodeanchor ) 在 SceneKit 方法中,如:

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

在这种情况下,全局参数名称 didAddfor 可以用吗?

此模式遵循 Swift API Design Guidelines:

More words may be needed to clarify intent or disambiguate meaning, but those that are redundant with information the reader already possesses should be omitted. In particular, omit words that merely repeat type information.

而 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的方式;参见 Name Translation from C to Swift and Omit-needless-words