print([ [1, 2], [3, 4]].flatMap{_ in })

一个特定的重载flatMap已被弃用。这是使用此签名的flatMap方法:Sequence
func flatMap<ElementOfResult>( _ transform: (Self.Element) throws -> ElementOfResult? ) rethrows -> [ElementOfResult]
自 Swift 4.1 以来,它已被弃用。您可以观看Point-Free 的第 10 集“两个平面地图的故事”</a>,详细了解它被弃用的原因。(那一集可以免费观看。)
但是,编译器被迫选择flatMap此处已弃用的重载。
对于的非弃用版本flatMap,该transform函数必须返回某种类型的Sequence。这就是 (non-deprecated) 的全部要点flatMap:输入的每个元素都变成了 some Sequence,并且这些Sequences 被连接(展平)成单个输出数组。
但是你的transformreturn Void, and Void(它是空元组的别名,())不是a Sequence。所以编译器不能使用非弃用的flatMap.
但是,编译器可以隐式提升您transform返回一个Optional<Void>,然后让编译器使用不推荐使用的flatMap来编译代码。
编写语句的正确方法是使用map而不是flatMap,因为您返回的是单个值 ( ()) 而不是 a Sequence:
[[1, 2], [3, 4]].map { _ in }