Swift中嵌套闭包中使用位置引用的闭包参数

16

我有一段代码,它运行良好:

var discoverEvents = events.map { event in
   userEvents.find { $0.eventID == event.eventID } ?? event
}

我想知道是否有办法在find中以某种方式按位置引用event,就像这样:

var discoverEvents = events.map { userEvents.find { $$0.eventID == $0.eventID } ?? $0 }

如何将其变为单行?


3
个人而言,我希望不要使用嵌套闭包,此时更好的做法是显式地命名函数。$位置语法真正适用于类似 .map { $0.name } 这样的短小快捷的情况,您可以一眼看到整个表达式。 - David Berry
1
@DavidBerry 我完全同意,只是好奇是否有可能 :) - Maksim
1个回答

14

不可以。内部的$0会遮盖外部的,没有其他方法可以引用外部作用域中的$0

正如@DavidBerry所提到的那样,这种语法适用于短的匿名函数。否则可能会变得非常混乱。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接