[swift-evolution] [Review] SE-0187: Introduce Sequence.filterMap(_:)
Kevin Ballard
kevin at sb.org
Wed Nov 8 12:23:22 CST 2017
On Tue, Nov 7, 2017, at 05:23 PM, Tino Heth via swift-evolution wrote:
> -1
>
> I guess breaking existing code will be the show stopper for this
> proposal — but I generally think that compatibility is a poor
> rationale to stop an improvement, so my personal reasons are
> different:> The name is just wrong.
> Just have a look at this simple example
>
> extension Int {
> func justImagineError() throws -> Int {
> return self
> }
> }
>
> let ints: [Int?] = [nil]
>
> let result = ints.flatMap {
> return try? $0?.justImagineError()
> }
> print(result)
>
> If flatMap would really filter out nil values, this should yield an
> empty array as result — but the actual output is *[nil]*
flatMap does filter out nil values. The problem is the return type of
your block is `Int??`, not `Int?`, so it's stripping off the outer layer
of optionals. Your example here is akin to one where your block returns
`[[[Int]]]` and asking why your resulting type is `[[Int]]`.
-Kevin Ballard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171108/23f9ef61/attachment.html>
More information about the swift-evolution
mailing list