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

标签 c# swift lambda closures

我正在使用 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/

相关文章:

C# - 有什么方法可以转换泛型集合吗?

c# - 是否可以防止 Windows 10 uwp 中的锁屏?

ios - TextView 在填充后在 iOS 中丢失样式

uitableview - 如何将自定义图像添加到 uitableview 单元格滑动以删除

swift - 快速创建一个具有 Int 范围的类型

java - Glassfish 嵌入式 v4.1.1 和 lambda

c# - 换行符未在文本框中正确显示

node.js - 如何解析AWS lambda上的body参数?

c++ - Lambda 表达式闭包函数不起作用

c# - 如何将 xbf 文件添加到 visual studio 项目