[swift-users] Swift 4 Strings and flatMap

Santiago Gil santi at thumbtack.com
Fri Oct 20 19:23:26 CDT 2017


Hi Swift users,

I just ran into a bug after a Swift 4 migration where we expected [String]
and got [Character] from a flatMap since flatMap will flatten the String
since it's now a collection.  While I understand why flatMap behaves this
way now that string are collections, in testing this I found some weird
behaviour...

var strArr = ["Hi", "hello"]

let result = strArr.flatMap { x in

    return x

}


The type of results ends up being [Character] in the above case. However,
adding a print statement changes things.

var strArr = ["Hi", "hello"]

let result = strArr.flatMap { x in

    print(x)

    return x

}

In this case, result is of type [String]

This seems like a bug, or is this expected Swift behaviour?

Thanks,

Santiago
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20171021/f196dacf/attachment.html>


More information about the swift-users mailing list