使用是否let _ = ...有任何目的?
我在Swift References中看到了什么是_下划线代表的问题和答案?我知道下划线可以用来表示不需要的变量.
如果我只需要一个元组的值,就像上面链接中的示例一样,这是有意义的:
let (result, _) = someFunctionThatReturnsATuple()
Run Code Online (Sandbox Code Playgroud)
但是,我最近遇到了这个代码:
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
}
Run Code Online (Sandbox Code Playgroud)
如果我删除了,我不会收到任何编译器警告或错误let _ =.在我看来,这样更简单,更易读.
try DB.run( table.create(ifNotExists: true) {t in
t.column(teamId, primaryKey: true)
t.column(city)
t.column(nickName)
t.column(abbreviation)
})
Run Code Online (Sandbox Code Playgroud)
该代码的作者撰写了一本关于Swift的书和博客.我知道作者不是绝对正确的,但它让我想知道是否有我遗失的东西.
使用let _ = ...具体告诉编译器你知道右边的表达式返回一个值,但你不关心它.
在标记方法的情况下warn_unused_result,如果不使用下划线,则编译器会发出警告.(因为在某些情况下,不使用返回值可能会出错.)