在 SwiftUI 3 中使用 if let 的成功值

Use success value of `if let` in SwiftUI 3

我在 SwiftUI 中进行了检查

 if tasks.first(where: { task in
            return isDone(task)
        }) != nil {
            let task = tasks.first(where: { task in
                    return isDone(task) 
                }
            )

我想知道 SwiftUI 3 中是否有一种方法可以在检查中使用 task,而不必在成功块中重新定义它?

我尝试用 if let task = tasks.first .... 替换第一行,但它 returns 是一个 Bool,这是有道理的。

不太确定这叫什么,所以不知道还有什么要研究的。

谢谢!

我假设你想要这样的东西(简化):

struct Task {
    var isDone: Bool {
        true
    }
    var name = "test"
}
func foo() {
    let tasks = [Task(), Task()]

    // just don't use `!= nil` converting it to Bool
    if let task = tasks.first(where: { [=10=].isDone }) {
        print(task.name)
    }
}