swift – 强制解包变量不好?

swift – 强制解包变量不好?,第1张

概述我的导师向我们介绍了(!) *** 作符,然后告诉我们不要再使用它了。告诉我们为什么当然,如果可选项为零,它会崩溃我们的应用程序。 然而,我发现自己处于像这样的情况,爆炸 *** 作符似乎是最简洁和安全的选择。 func fullName() -> String { if middleName == nil { return "\(firstName) \(lastName)" } 我的导师向我们介绍了(!) *** 作符,然后告诉我们不要再使用它了。告诉我们为什么当然,如果可选项为零,它会崩溃我们的应用程序。

然而,我发现自己处于像这样的情况,爆炸 *** 作符似乎是最简洁和安全的选择。

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 – 强制解包变量不好?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存