extension Sequence { public func flatten<T>() -> [T] where Iterator.Element : Sequence, Iterator.Element.Iterator.Element == T { return flatMap { $0 } } } let a: [[Int]] = [[2, 3], [5]] let b: [Int] = a.flatten() print(b)
Element
のままだと動かなくて Iterator.Element
にしないとエラーになったから、ちゃんと Swift 3 だと思う。