I'd also like to see a solution to this, FWIW.
Sometime's it's hard to tell whether something is its own function, or another
function with with some defaulted parameters, so I could imagine this being a
source of confusion.
> I came across something that I'm not sure it's a bug or by design and if it's
> by design, whether this should be discussed here.
>
> Example:
>
> class Foo {
> init(number: Int) { /* ... */ }
> }
>
> let closure = Foo.init(number:) // (Int) ->Foo
> [1, 2, 3].map(closure) // [Foo, Foo, Foo]
>
> This works great until the initializer gets a default argument:
>
> class Foo {
> init(number: Int, string: String = "") { /* ... */ }
> }
>
> // Error: Foo has no member init(number:)
> let closure = Foo.init(number:)
>
> I was wondering if we could get closures to methods without the default
> arguments. Currently, this needs to be worked around by e.g. creating a
> second closure that invokes the method without the default arguments:
>
> let closure: (Int) ->Foo = { Foo(number: $0) }
>
> But to me it seems like something that should work "out of the box".
>
> Thoughts?
>
>
>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution