renderer(_:didAdd:for:) 方法中的全局和局部参数名称
Posted
技术标签:
【中文标题】renderer(_:didAdd:for:) 方法中的全局和局部参数名称【英文标题】:Global and local argument names in renderer(_:didAdd:for:) method 【发布时间】:2021-01-25 08:42:04 【问题描述】:我们总是在 SceneKit 方法中使用本地参数名称(node 和 anchor),例如:
optional func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
在什么情况下可以使用全局参数名称didAdd和for?
【问题讨论】:
didAdd 和 for 不是参数。它们是使函数名称更具表现力的标签。 对不起@EmilioPelaez,但为什么他们不是didAddNode
和forAnchor
呢?它更具表现力,不是吗?
因为你已经有了“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