WJM*_*WJM 2 dictionary filter swift3
我在Swift 3中有一个[String:String]数组,我想在这个数组中找到一个特定的项目,具体取决于Key是否包含String值.
let result = collection.first(where: ((key, value) -> Bool in
return key.contains("mystring")))
Run Code Online (Sandbox Code Playgroud)
然而Xcode一直告诉我它是'表达式列表中的预期表达式'.我现在用Google搜索了一个小时,并且以包含或过滤方式使用此闭包的每个网站似乎都是正确的语法.
我在这里错过了什么?
你实际上没有关闭,因为你使用( )而不是{ }
此外,封闭为first(where:)类型(Dictionary<Key, Value>.Iterator.Element) throws -> Bool.参数是单个元组,它是(Key, Value)迭代对.
试试这个,相反:
let result = collection.first(where: { pair -> Bool in
return pair.key.contains("mystring")
})
Run Code Online (Sandbox Code Playgroud)
但是您可以进行一些简化:
Bool返回类型可以推断.return单个表达式闭包中不需要该关键字.pair参数名称是任意的,没有什么意义,所以最好只使用隐式闭合参数.在这些更改之后,这一切都简化为:
let result = collection.first{ $0.key.contains("mystring") }
Run Code Online (Sandbox Code Playgroud)