> On Jun 29, 2016, at 11:03 PM, boris via swift-users <swift-users@swift.org> 
> wrote:
> 
> //Report Error: Ambiguous reference to member ‘map’ 
> //    
> numbers.map({
>     (number: Int) in
>         var ret = 3 * number
>         return ret
> })

I asked the same question a few months ago; the answer was that it is a 
deliberate design choice that you can only omit the return type from a 
single-expression closure (and that the error message is less than helpful). 
For example, Jordan Rose offered this explanation:

> Swift very deliberately does not infer types across multiple statements in 
> closure bodies. This is mostly an implementation restriction (our 
> type-checking system can't handle it very well), but it's also a simple rule 
> that explains the implementation restriction, rather than having type 
> inference in closure bodies working some of the time but not all.
> 
> As Chris pointed out, the compiler could definitely do a better job 
> communicating the problem, but actually changing the behavior here would 
> require significant implementation work. So this is not considered a "bug", 
> just an implementation-driven design choice.

Regards,

        Neil Faiman
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to