在 Swift 中,您可以编写以下内容:
func foo(_:Int) -> { return 1 }
其中下划线是被忽略的参数。我只是因为文档才知道这一点,但想不出任何关于为什么你会这样做的用例。我错过了什么吗?
在以下情况下,忽略参数(或元组的成员,它们非常接近同一事物)是有意义的:
-
您正在重写超类函数或实现由协议定义的函数,但该函数的实现不需要参数之一。例如,如果您挂钩应用程序启动但不需要对共享的引用UIApplication
该方法中的实例:
override func application(_: UIApplication!, didFinishLaunchingWithOptions _: NSDictionary!) -> Bool { /* ... */ }
-
您提供了一个闭包(ObjC 中的块)作为某个 API 的参数,但您对该 API 的使用并不关心闭包的参数之一。例如,如果您要提交对照片库的更改并希望将谨慎抛在脑后,则可以忽略success
and error
完成处理程序中的参数:
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
// change requests
}, completionHandler: { _, _ in
NSLog("Changes complete. Did they succeed? Who knows!")
})
-
您正在调用一个提供多个返回值的函数/方法,但不关心其中之一。例如,假设假设NSColor
方法将组件作为元组返回,您可以忽略 alpha:
let (r, g, b, _) = color.getComponents()
其背后的原因是它使您的代码更具可读性。如果您为最终没有使用的参数(或元组成员)声明了一个本地名称,那么阅读您的代码的其他人(很可能就是您几个月后的版本)可能会看到该名称并感到好奇它在函数体中的何处或如何使用。如果您预先声明您忽略该参数(或元组成员),则可以清楚地表明无需在该范围内担心它。 (理论上,这还可以为编译器提供优化提示,这也可能使您的代码运行得更快。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)