[swift-evolution] Pitch: Compound name `foo(:)` for nullary functions
Ben Rimmington
me at benrimmington.com
Thu Feb 23 07:59:49 CST 2017
> On 22 Feb 2017, at 07:05, Jacob Bandes-Storch wrote:
>
> Compound name syntax — foo(_:), foo(bar:), foo(bar:baz:) — is used to disambiguate references to functions. (You might've used it inside a #selector expression.) But there's currently no compound name for a function with no arguments.
>
> func foo() {} // no compound syntax for this one :(
> func foo(_ bar: Int) {} // foo(_:)
> func foo(bar: Int) {} // foo(bar:)
> func foo(bar: String, baz: Double) {} // foo(bar:baz:)
>
> Given these four functions, only the first one has no compound name syntax. And the simple reference "let myfn = foo" is ambiguous because it could refer to any of the four. A workaround is to specify a contextual type, e.g. "let myfn = foo as () -> Void".
>
> I filed SR-3550 <https://bugs.swift.org/browse/SR-3550> for this a while ago, and there was some discussion in JIRA about it. I'd like to continue exploring solutions here and then write up a formal proposal.
Would the following be an option?
foo() // Function call expression.
`foo()` // Function reference (using backticks).
-- Ben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170223/399b750d/attachment.html>
More information about the swift-evolution
mailing list