gpt4 book ai didi

c# - Swift:可以像 lambda 一样使用闭包来查找数组中的对象吗?

转载 作者:可可西里 更新时间:2023-11-01 00:36:49 25 4
gpt4 key购买 nike

我正在使用 swift,我有一个数组,我想使用其中一个属性的值来搜索对象。

在 C# 中,我会像这样使用 lambda 来查找我的对象:return myArray.FirstOrDefault(obj -> obj.Name == "Foo");

我听说 swift 使用闭包而不是 lambda,那么是否有类似的方法可以使用闭包在 swift 中完成这一单行任务?

我查看了苹果关于闭包的文档here一切似乎都需要编写一个单独的函数。只是感觉可能有一种我还没有找到的快速完成此操作的简单方法。

最佳答案

Swift 有一个名为 indexOf 的数组方法,它会在给定闭包的情况下返回匹配元素的第一个索引。要返回实际元素,您需要执行类似的操作。返回是可选的,因为可能没有匹配项,所以您必须自己处理。

let element = array.filter{ $0.name == "Foo" }.first

enter image description here

也许我们可以重载 Array 以便有一个 first 版本采用闭包而不是 void。

extension Array {
func first(includes: (Element) -> Bool) -> Element? {
return self.filter{ includes($0) }.first
}
}

enter image description here

关于c# - Swift:可以像 lambda 一样使用闭包来查找数组中的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35764222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com