一尘不染

在Swift中,“让_ =…”(让下划线等于)是否有用吗?

swift

使用let _ = ...有什么用吗?

我已经看到了有关SwiftReferences中的_下划线代表什么的问题和答案。而且我知道下划线可以用来表示不需要的变量。

如果我只需要一个元组的值,如上面链接中的示例所示,这将很有意义:

let (result, _) = someFunctionThatReturnsATuple()

但是,我最近遇到了以下代码

do {
    let _ = try DB.run( table.create(ifNotExists: true) {t in
        t.column(teamId, primaryKey: true)
        t.column(city)
        t.column(nickName)
        t.column(abbreviation)
        })

} catch _ {
    // Error throw if table already exists
}

如果仅删除,则不会收到任何编译器警告或错误let _ =。在我看来,这更简单易读。

try DB.run( table.create(ifNotExists: true) {t in
    t.column(teamId, primaryKey: true)
    t.column(city)
    t.column(nickName)
    t.column(abbreviation)
    })

该代码的作者写了一本关于Swift的书和一个博客。我知道作者并不是万无一失,但是这让我想知道我是否缺少某些东西。


阅读 263

收藏
2020-07-07

共1个答案

一尘不染

如果该方法已经被打上了你会得到一个编译器警告warn_unused_result开发者文档

将此属性应用于方法或函数声明,以使编译器在调用方法或函数而不使用其结果时发出警告。

您可以使用此属性来提供有关错误使用具有变异对方的非变异方法的警告消息。

2020-07-07