【问题标题】:Map a void (non-returning function) over an array在数组上映射 void(非返回函数)
【发布时间】:2016-08-28 05:20:23
【问题描述】:

标题是不言自明的,是否有任何映射方式,例如,addGestureRecognizerUIGestureRecognizers 的数组上。我一直在摆弄

recognizers.map(MyWebOutlet.addGestureRecognizer)

但是由于内置映射必须返回另一个数组,因此需要一个返回某种值的函数。我应该将addGestureRecognizer 包装在另一个返回函数中还是另一种更聪明的方式?

【问题讨论】:

  • recognizers.forEach{MyWebOutlet.addGestureRecognizer($0)}?
  • $0 “匿名闭包参数不包含在闭包中”显然。您只需要传递函数名称,例如 recognizers.forEach(MyWebOutlet.addGestureRecognizer) 但感谢堆,不知道 forEach :)
  • 我不明白为什么闭包版本不起作用 - 但你是对的,你可以将函数传入(我通常更喜欢将它写成闭包只是为了更明确一点)

标签: ios arrays swift dictionary uigesturerecognizer


【解决方案1】:

map 旨在从另一个数组返回一个数组,该数组已应用给定的transformation(通过转换每个元素)。因此,您传递给它的函数自然必须返回转换后的元素。

在您的情况下,您实际上并没有转换元素,您只是想在函数的参数中使用它们。为此,您可以使用forEach

recognizers.forEach(MyWebOutlet.addGestureRecognizer)

【讨论】:

  • 是的,在谷歌上搜索时我的大脑非常胀气,我没有设法偶然发现forEach。我知道 map 被设计为一个数组到数组函数,我只是不知道除了“映射”一个函数之外要使用什么术语。再次感谢:)
猜你喜欢
  • 1970-01-01
  • 2020-07-24
  • 2019-10-31
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2016-11-26
相关资源
最近更新 更多