然而,我发现自己处于像这样的情况,爆炸 *** 作符似乎是最简洁和安全的选择。
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。
总结以上是内存溢出为你收集整理的swift – 强制解包变量不好?全部内容,希望文章能够帮你解决swift – 强制解包变量不好?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)