加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读