这儿每天分享一个 iOS 的新知识,快来关注我吧
前语
在 Swift 中写办法的时候,经常会遇到这样的情况:有时需求用到回来值,有时候不需求用到回来值。
举个例子,咱们有个办法叫 updateUserInfo
,更新用户信息,并回来更新之后的 User:
class User {
static func updateUserInfo() -> User {
// 更新用户信息
// ...
// 回来最新的用户信息
return User()
}
}
当咱们用到这个办法时:
let newUser = User.updateUserInfo()
print("最新的 User 为:\(newUser)")
但是假如咱们只是想要更新用户,而不需求关怀回来值,这时候系统会给咱们一个正告:
一种解决这个正告的办法是运用下划线 _ 来疏忽回来值:
_ = User.updateUserInfo()
swift 有更好的办法,就是今日要讲的 @discardableResult
关键字。
@discardableResult
@discardableResult
关键字答应咱们符号一个带回来值的办法,然后疏忽回来值,而不用处理烦人的正告,或者每次都要运用下划线。
只需求在办法的声明前面增加 @discardableResult
关键字即可:
class User {
@discardableResult
static func updateUserInfo() -> User {
// 更新用户信息
// ...
// 回来最新的用户信息
return User()
}
}
当再次运用 User.updateUserInfo()
办法,发现正告没有了。
为什么需求这个功用?
这看起来是个很小的功用,但假如不运用的话,整个项目或许充满了正告,消除这个正告之后整个项目就干净多了。
这个关键字的运用十分广泛,我在 swift 常用第三方库 Alamofire 里查了一下,竟然用到了 49 次。
什么情况下需求运用?
总结一下,以下情况应该用 @discardableResult
:
-
当你的函数或办法有回来值,但在某些情况下调用者或许不需求运用这个回来值时。
-
当你想要消除因为没有运用函数或办法的回来值而发生的正告时。
但是,也不是所有情况都应该用这个关键字,在以下情况下最好不要不运用@discardableResult
:
-
当函数或办法的回来值关于调用者来说总是重要且必须被处理时。例如,假如一个函数履行一些操作并回来一个过错(假如存在),那么你期望调用者应该处理这个过错。
-
有些时候假如疏忽函数或办法的回来值或许导致过错或不正确的行为,则不应运用
@discardableResult
。
这儿每天分享一个 iOS 的新知识,快来关注我吧
本文同步自微信大众号 “iOS新知”,每天按时分享一个新知识,这儿只是同步,想要及时学到就来关注我吧!