objective-c - renderer(_:didAdd:for:) 方法中的全局和局部参数名称
问题描述
我们总是在 SceneKit 方法中使用本地参数名称(节点和锚点),例如:
optional func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
在什么情况下可以使用全局参数名称didAdd和for ?
解决方案
此模式遵循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。
推荐阅读
- python - 使用 pdfminer 或任何其他库从 python 中选择性读取数据
- opencv - 三、CanvasTexture 需要更新无帮助
- ios - 如何配置 VSCode 以在带有 React Native 的 iPhone 上运行
- azure - 如何允许外部用户访问配置了 Azure 应用代理和 SAML SSO 的本地应用
- amazon-web-services - 如何指定首次运行时 AWS CloudWatch 速率表达式?
- azure-ad-b2c - 如何在 B2C 上检索 extensionProperty?
- git - 无法与 Bitbucket 共享 git 存储库
- ruby - 在我们中间随机生成器
- java - 如何使用 R2DBC-DatabaseClient 实现 saveAll?
- java - 如何从方法内部编辑实例变量?不能从静态上下文中引用非静态变量 sum