当前位置: 首页 > 面试题库 >

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

商开济
2023-03-14
问题内容

使用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的书和一个博客。我知道作者并不是万无一失,但是这让我想知道我是否缺少某些东西。


问题答案:

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

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

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



 类似资料:
  • 问题内容: 在预发布文档中,似乎没有Swift版本的CGPathApply。是否有同等的或替代的?我正在尝试获取CGPath的所有子路径,以便可以从其他起点重绘它。 问题答案: 斯威夫特3.0 在Swift 3.0中,您可以这样使用: 斯威夫特2.2 通过添加,您现在可以直接从Swift进行调用。这是做必要魔术的包装器: (请注意,我的代码中没有提到,但是在Core Graphics模块的声明中使

  • 我试图检查我收到的新数据对我持有的对象,我试图找出的是,如果他们的关键字的对象,我正在发送匹配的任何关键字的对象,我目前有。 所以我抓着一个物体就像 然后我收到一个单件物品 我想检查这个对象与对象数组(myObj),看看是否有任何东西与关键字“三”在里面(我不关心值,只是关键字匹配),所以我可以把它弹出到一个if语句分开就像- 我使用下划线。谢谢 编辑:对不起,这不清楚,我编辑它是为了澄清- 我握

  • 问题内容: 我正在尝试查询Firebase,以检查是否有任何用户,然后在返回快照时,我想查看它是否等于nil。我尝试执行此操作,但是我使用的方法不起作用,并且如果快照不等于nil,则只有某种输出。我添加了当前拥有的代码和Firebase中的JSON文本。 JSON数据: 问题答案: 这里发生了几件事,但是最重要的是,您无法测试患儿的存在。如果您考虑一下,那是有道理的:当将一个孩子添加到该位置时,将

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

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

  • 问题内容: 如果我想分配一个char数组(用C表示),该数组保证足够大以容纳任何有效的绝对路径名和文件名,那么它需要多大。 在Win32上,有MAX_PATH定义。Unix / linux相当于什么? 问题答案: 有一个,但是有点问题。从realpath(3)手册页的bug部分中: 此功能的POSIX.1-2001标准版本在设计上已被破坏,因为无法确定输出缓冲区 resolve_path 的合适大