[swift-evolution] [Idea] Syntactic sugar for using methods as functions
Anton Zhilin
antonyzhilin at gmail.com
Mon Jun 27 16:07:46 CDT 2016
Charlie Monroe via swift-evolution <swift-evolution at ...> writes:
> This will only get you an array of closures:
>
> let bars = foos.map(Foo.getBar) // [() -> Int, () -> Int, () -> Int]
> bars[0] // () -> Int
> bars[0]() // 1
Just checked:
struct A {
func a() -> Int { return 0 }
}
print(A.a.dynamicType) //=> (A) -> (()) -> Int
Wut?
First of all, (()) -> Int should mean function with one parameter, since
tuple splat behaviour is going to be removed.
Then, with uncurrying proposal, A.a.dynamicType should be (A) -> Int,
because both self and other parameters are now passed together.
My guess is that both accepted proposals are still not implemented. Once
it's done, we will get (A.a)(A()) == 0 and [A(), A()].map(A.a) == [0, 0]
More information about the swift-evolution
mailing list