【问题标题】:Long form of this Swift syntax这种 Swift 语法的长格式
【发布时间】:2021-10-10 16:48:36
【问题描述】:

下面会比较第一个元素的id和compr的id,如果匹配则返回true。 我对 .first { } != nil 语法的 {} 感到困惑。这种模式的较长形式如何浓缩为以下内容:

private(set) var arr : [Arrs] = [] 

func isPresent(for compr: Compr) -> Bool {
  Arrs.first { comp.id == $0.id } != nil 
}

【问题讨论】:

  • first 如果没有找到任何东西,则返回 nil。所以如果返回值不是nil,它确实找到了一个值。
  • Arrs.first 无法编译。你当然是说arr.first
  • 使用contains(where:)会更简单,例如Shorthand to test if an object exists in an array for Swift?
  • 解释一下Arrs 是什么,我认为comp 只是一个错字?

标签: swift


【解决方案1】:

首先,将行更改为以下内容,以便编译:

arr.first { compr.id == $0.id } != nil

这只是将trailing closure syntax 用于first(where:) 方法。也可以写成:

arr.first(where: { compr.id == $0.id }) != nil

但更好的方法是执行以下操作:

arr.contains { compr.id == $0.id }

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2015-01-05
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多