flatMap
для массива массивов;он продвигает содержимое внутренних массивов в содержимое внешнего массива.И это все это делает.Это не волшебно рекурсивно.Он работает с массивом типа [[Element]]
, где Element - какой-то один тип.
Другими словами, плоская карта [[1],[2]]
равна [1,2]
, потому что это массив массивов;его тип [[Int]]
.
Но [1,[2]]
- это , а не массив массивов.На самом деле это не массив ничего ;это не имеет смысла в мире Swift, где все элементы массива должны быть одного типа.Так что это просто массив Any (как признает ваш код);Swift даже не видит никаких массивов внутри вашего массива t1
.Так что flatMap
не применяется.
В идеальном мире ваш код даже не скомпилируется, потому что flatMap
, используемый в массиве Any, недопустим.К сожалению, есть (или был) другой flatMap
, и компилятор, отказавшись от flatMap
, который применяется к [[Element]]
, прибегает к другим flatMap
.Это применимо к любому массиву, так что ваш код становится легальным (но он все же ничего не делает).См. Свести [Любой] Array Swift .