【问题标题】:Xcode7 and array.filter method misunderstandingXcode7与array.filter方法的误区
【发布时间】:2015-09-04 03:17:34
【问题描述】:

您好,我使用的是最新的 Xcode 7 beta 6,似乎是数组的过滤方法有问题。

在以下示例中,我试图重现这一点: 搜索数组,如果发现任何大于 40 的数字,请将它们丢弃,然后在执行完所有操作后返回过滤后的数组。它曾经与 Xcode 6.4 一起工作,但现在它不是我在这里缺少的东西?一旦我输入过滤器并按回车键,导致参数中的原因我得到这个:

(includeElement: (Self.Generator.Element) throws -> Bool

这是 Xcode 6.4 的代码

var someIntArray2 = [1,34,56,92,12,32,124,23,1293]

someIntArray2.filter({$0 < $40})

【问题讨论】:

  • 40 之前取出$。 (someIntArray2.filter{$0 &lt; 40})

标签: ios arrays xcode swift swift2


【解决方案1】:

扩展我之前的评论:

someIntArray2.filter({$0 &lt; $40}) 中,$40 正在检查传递给闭包的第 40 个参数,并将第 0 个参数与它进行比较,但 filter 方法期望的闭包只接受一个参数。

该行应改为转换为someIntArray2.filter({$0 &lt; 40}),它将按预期将传递的参数与数字40进行比较。


(因为闭包是函数的最后一个参数,所以也可以去掉括号,将行变成someIntArray2.filter{$0 &lt; 40}

【讨论】:

  • 是的,非常感谢。我自己是一个新的初学者,你刚刚帮助我完全理解了闭包机制。也许现在你可以解释一下尾随闭包除了美学之外的不同之处吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 2022-12-01
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
相关资源
最近更新 更多