Swift 5.9 新增 if 和 switch 作为表达式的能力

677 阅读2分钟

在 Xcode 15 附带的 Swift 5.9 引入了一个不错的功能,它允许我们使用 if 和 switch 语句作为表达式。我们可以更有条理的为变量赋值,并使用 if 和 switch 声明变量,有点像三目运算。

举个简单的例子,我们可以根据根据学生的成绩来返回是否合格:

/// 检查学生成绩是否合格
/// - Parameter score: 传入一个分数
/// - Returns: 返回“及格”或者“不及格”
func scoreString(with scoreInt) -> String {
    let result = if score >= 60 { "及格" } else { "不及格" }
    return result
}

let score = 80
print(scoreString(with: score))  // 打印 "及格"

有人可能会疑惑,这和三目运算的区别在哪里?

确实,我们可以用三目运算 let result = score >= 60 ? "及格" : "不及格" 实现这个函数,还比使用 if 更简单。

我个人觉得使用 if 的好处是当条件分支比较多的时候调理更加清晰,代码更易读,也更容易维护。另外在编译器编译的时候三目运算会被当成是一个语句,而 if/else 会被当成两个语句,这对编译会有些影响。

switch 可以这样使用:

/// 检查学生成绩,返回 ABCD 的格式
/// - Parameter score: 传入一个分数
/// - Returns: 返回“A”/“B”/“C”/“D”
func scoreString(with scoreInt) -> String {
    let result = switch score {
        case 90...100"A"
        case 80...90"B"
        case 60...80"C"
        case 0...60"D"
        default"Unknown"
    }
    return result
}

let score = 85
print(scoreString(with: score))  // 打印 "B"

点击下方公众号卡片,关注我,每天分享一个关于 iOS 的新知识

本文同步自微信公众号 “iOS新知”,每天准时分享一个新知识,这里只是同步,想要获得更好的体验就扫描下方二维码关注我吧!

image.png