> Am 08.11.2017 um 19:23 schrieb Kevin Ballard via swift-evolution
> <swift-evolution@swift.org>:
>
> 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.
The filter function afaik doesn’t perform that kind of stripping - if you feed
it [A?], you get [A?] as output, no matter what kind of predicate you use, it
can only eliminate values (Optional.none), not change their type.
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution