Swift 4-FlatMap无法展平数组

Joh*_*ohn 1 arrays flatmap swift swift4

我正在和Swift玩耍,但遇到了一些麻烦flatMap。我已经看到了这个 StackOverflow问题,该问题描述了如何使用来展平数组的数组flatMap,但是当我在操场上重现相同的代码时,它并不会展平该数组。如果有人可以提供一些有关此处发生的情况的见解,我将不胜感激。

这是代码和结果的屏幕截图:在此处输入图片说明

mat*_*att 7

flatMap用于数组数组;它将内部数组的内容提升为外部数组的内容。这就是全部。它不会神奇地递归。它适用于type数组[[Element]],其中Element是某种单一类型。

换句话说,的平面图[[1],[2]][1,2],因为那是一个数组数组;其类型为[[Int]]

[1,[2]]不是数组的数组。它实际上不是一堆东西;在Swift世界中,数组的所有元素必须都属于同一类型,这毫无意义。因此,它仅仅是Any的数组(如您的代码所承认);Swift甚至看不到数组中的任何数组t1。因此flatMap不适用。

在理想情况下,您的代码甚至都不会编译,因为flatMap在Any数组上使用是非法的。不幸的是,存在(或曾经是)另一个 flatMap,并且编译器在放弃flatMap适用于的基础上[[Element]]求助于另一个 flatMap。它适用于任何数组,因此您的代码最终合法(但仍然无效)。请参见Flatten [Any] Array Swift