Dictionary 如何首先实现Swift 3字典(其中:)闭包

Dictionary 如何首先实现Swift 3字典(其中:)闭包,dictionary,filter,swift3,Dictionary,Filter,Swift3,我在Swift 3中有一个[String:String]数组,我想根据键是否包含字符串值在该数组中查找特定项 let result = collection.first(where: ((key, value) -> Bool in return key.contains("mystring"))) 然而,Xcode一直告诉我它是“表达式列表中的预期表达式”。我在谷歌上搜索了一个小时,每个以包含或过滤方式使用此闭包的

我在Swift 3中有一个[String:String]数组,我想根据键是否包含字符串值在该数组中查找特定项

                let result = collection.first(where: ((key, value) -> Bool in
                    return key.contains("mystring")))
然而,Xcode一直告诉我它是“表达式列表中的预期表达式”。我在谷歌上搜索了一个小时,每个以包含或过滤方式使用此闭包的网站似乎都是正确的语法


我在这里遗漏了什么?

您实际上还没有完成闭包,因为您使用了
()
而不是
{}

此外,
first(其中:)
的闭包具有类型
(Dictionary.Iterator.Element)抛出->Bool
。参数是一个元组,它是迭代的
(键,值)

请尝试以下方法:

let result = collection.first(where: { pair -> Bool in
    return pair.key.contains("mystring")
})
但您可以做一些简化:

  • 可以推断
    Bool
    返回类型
  • return
    关键字在单表达式闭包中不是必需的
  • 参数名是任意的,没有意义,因此最好只使用隐式闭包参数
  • 可以使用tralling闭包语法
  • 经过这些更改后,所有内容都简化为:

    let result = collection.first{ $0.key.contains("mystring") }