swift – 强制解包变量不好?
发布时间:2020-12-14 05:53:10 所属栏目:百科 来源:网络整理
导读:我的导师向我们介绍了(!)操作符,然后告诉我们不要再使用它了。告诉我们为什么当然,如果可选项为零,它会崩溃我们的应用程序。 然而,我发现自己处于像这样的情况,爆炸操作符似乎是最简洁和安全的选择。 func fullName() - String { if middleName == nil
我的导师向我们介绍了(!)操作符,然后告诉我们不要再使用它了。告诉我们为什么当然,如果可选项为零,它会崩溃我们的应用程序。
然而,我发现自己处于像这样的情况,爆炸操作符似乎是最简洁和安全的选择。 func fullName() -> String { if middleName == nil { return "(firstName) (lastName)" }else{ return "(firstName) (middleName!) (lastName)" } } 有没有更好的方法来做这样的事情? 另外,如果有人在想,这是全课。 class CPerson{ var firstName: String var middleName: String? var lastName: String init(firstName: String,middleName: String?,lastName: String) { self.firstName = firstName self.middleName = middleName self.lastName = lastName } convenience init(firstName: String,lastName: String) { self.init(firstName: firstName,middleName: nil,lastName: lastName) } func fullName() -> String { if middleName == nil { return "(firstName) (lastName)" }else{ return "(firstName) (middleName!) (lastName)" } } } 我的导师说:“如果我看到你使用轰炸机运算符,我们要打”O_O“
使用if或guard构造:
func fullName() -> String { if let middleName = middleName { return "(firstName) (middleName) (lastName)" } else { return "(firstName) (lastName)" } } func fullName() -> String { guard let middleName = middleName else { return "(firstName) (lastName)" } return "(firstName) (middleName) (lastName)" } 我已经把警卫声明放在了完整性之中,但是正如其他人所言,这更常见于错误/失败案例。 我也建议不要使用字符串插入字符串。它们已经是字符串,不需要在新的字符串中使用每个名称的描述。 考虑返回firstName“”lastName。当字符串插值可能返回意外结果的情况,请参见Difference between String interpolation and String initializer in Swift。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |