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

Posted

技术标签:

【中文标题】renderer(_:didAdd:for:) 方法中的全局和局部参数名称【英文标题】:Global and local argument names in renderer(_:didAdd:for:) method 【发布时间】:2021-01-25 08:42:04 【问题描述】:

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

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

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

【问题讨论】:

didAdd 和 for 不是参数。它们是使函数名称更具表现力的标签。 对不起@EmilioPelaez,但为什么他们不是didAddNodeforAnchor 呢?它更具表现力,不是吗? 因为你已经有了“node”和“anchor”作为参数名。 【参考方案1】:

此模式遵循Swift API Design Guidelines:

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

虽然 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 和Omit-needless-words。

【讨论】:

以上是关于renderer(_:didAdd:for:) 方法中的全局和局部参数名称的主要内容,如果未能解决你的问题,请参考以下文章

NativeScript 遇到致命错误:Uncaught ReferenceError: __UI_USE_EXTERNAL_RENDERER__ is not defined

错误 _renderer.setElementStyle “无法在 [null] 中设置未定义的属性‘背景颜色’”

django2.1发生Django TypeError: render() got an unexpected keyword argument 'renderer

Uncaught TypeError: renderer.incDisplayOrder is not a function

Uncaught TypeError: renderer.incDisplayOrder is not a function

从 didAdd 锚点获取 ARAnchor 的旋转