当前位置: 首页 > 知识库问答 >
问题:

让_=...(让下划线相等)在Swift中有什么用吗?

羊舌昆杰
2023-03-14

是否使用let= 有什么目的吗?

我已经看到了Swift参考文献中的uuu下划线代表什么的问题和答案?我知道下划线可以用来表示不需要的变量。

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

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的书和一个博客。我知道作家们并非十全十美,但这让我怀疑我是否遗漏了什么。


共有3个答案

云远
2023-03-14

有时使用try既简单又干净 大于do catch。如果您用退出通话,请尝试 放弃结果。

例子:

let _ = try? NSFileManager.defaultManager().moveItemAtURL(url1, toURL: url2)

钮才哲
2023-03-14
匿名用户

使用特别告诉编译器,您知道右边的表达式返回一个值,但您并不关心它。

在方法被标记为warn\u unused\u result的情况下,如果不使用下划线,编译器将发出警告。(因为在某些情况下,不使用返回值可能是错误的。)

漆雕和昶
2023-03-14

如果该方法已使用开发者文档中的warn\u unused\u结果标记,您将收到编译器警告:

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

可以使用此属性提供有关不正确使用具有变异对应项的非变异方法的警告消息。

 类似资料:
  • 问题内容: 使用有什么用吗? 我已经看到了有关SwiftReferences中的_下划线代表什么的问题和答案。而且我知道下划线可以用来表示不需要的变量。 如果我只需要一个元组的值,如上面链接中的示例所示,这将很有意义: 但是,我最近遇到了以下代码: 如果仅删除,则不会收到任何编译器警告或错误。在我看来,这更简单易读。 该代码的作者写了一本关于Swift的书和一个博客。我知道作者并不是万无一失,但是

  • 问题内容: 在Apple文档的参考部分中,有很多这类事情的实例: 的Objective-C“等效”是: 令我惊讶的是,(在Swift参考资料中)下划线和“动作”用斜体字后要留一个空格可能很重要。 但是我不知道这是要传达什么。所以也许问题是…参考文献中使用的约定是否有参考文献? -这是我在此引用中指向下划线使用的页面:https : //developer.apple.com/documentati

  • 问题内容: 我正在做一个redux教程,并且看到这样的呼叫: 在其他地方定义为: 下划线是什么“ _”?为什么使用它? 问题答案: 这是私有方法和变量的约定。在JavaScript中,没有类的真正隐私。 这意味着您不应在对象之外使用这些方法(以“ ” 开头)。从技术上当然可以,但是“ ”表示您不应该这样做。

  • 本文向大家介绍python中单下划线和双下划线分别是什么?相关面试题,主要包含被问及python中单下划线和双下划线分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 name:一种约定,python内部的名字,是用来与用户自动以的名字区分开,防止冲突

  • 我正在尝试让我的GUI在图形中最近更新后等待2秒。这意味着在我使用后: 我希望GUI在进行进一步计算之前等待,然后再次绘制它们。 代码: 但是当我运行它时-首先它执行最后两行,然后等待2秒... 老实说,我对线程和JavaSwing的了解并不是最好的(尤其是当我试图从甲骨文网站上读到的了解Swing工人时),所以如果答案详细,我将不胜感激。 谢谢

  • 我有两个时间线运行在一个函数中,它们都影响一个对象,问题是当我玩第一个时间线时,其他时间线也开始在下一行代码中,我怎么能等到第一个时间线结束再玩另一个时间线呢?

  • 我在学习函数式反应性编程时发现了这句话,来自刘海和保罗·胡达克的《用箭堵住空间泄漏》(第5页): 这里的差异似乎很小,但它极大地促进了空间效率。为什么以及如何发生?我最好的猜测是手工评估: 如上所述,我们需要为这些递归创建无限的新thunk。然后我尝试评估第二个: 在第二种形式中,出现了,并且可以在它出现的每个地方共享,所以我想这就是为什么我们只需要空格而不是。但是我不确定我是对还是错。 顺便说一

  • 就像这样的圆角 代码如下: https://codepen.io/qingyun1029/pen/JjwxrmE