我正在使用 swift,我有一个数组,我想使用其中一个属性的值来搜索对象。
在 C# 中,我会像这样使用 lambda 来查找我的对象:
return myArray.FirstOrDefault(obj -> obj.Name == "Foo");
我听说 swift 使用闭包而不是 lambda,那么是否有类似的方法可以使用闭包在 swift 中完成这一单行任务?
我查看了苹果关于闭包的文档here一切似乎都需要编写一个单独的函数。只是感觉可能有一种我还没有找到的快速完成此操作的简单方法。
最佳答案
Swift 有一个名为 indexOf
的数组方法,它会在给定闭包的情况下返回匹配元素的第一个索引。要返回实际元素,您需要执行类似的操作。返回是可选的,因为可能没有匹配项,所以您必须自己处理。
let element = array.filter{ $0.name == "Foo" }.first
也许我们可以重载 Array 以便有一个 first
版本采用闭包而不是 void。
extension Array {
func first(includes: (Element) -> Bool) -> Element? {
return self.filter{ includes($0) }.first
}
}
关于c# - Swift:可以像 lambda 一样使用闭包来查找数组中的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35764222/