I agree with Xiaodi about the syntax. We should not use ‘_’ here for the same reason that we do use it for label-less parameters: it makes every argument always marked by at least two characters. That makes it easier to read and harder to typo.
I do see that there’s a problem between ‘foo()’ (a reference to a function with no arguments) and ‘foo()’ (the result of calling a function with no arguments). I’m personally not so inclined to worry about the “reference to a function” syntax; I’ve ultimately fallen into the camp that prefers a wrapper closure in most cases. The selector case is a little different. If we ban general expressions there, then I think there’s no problem with it being mistaken for an actual call, because nothing in #selector would act like a call anyway. If we don’t, it’d still be unambiguous…but I agree that it could be confusing. Jordan > On May 5, 2016, at 09:34, Xiaodi Wu via swift-evolution > <swift-evolution@swift.org> wrote: > > I disagree. Not having a parameter label implies presence of a parameter. It > is not natural at all to use the same symbol to denote absence of a > parameter. `foo(_)` is a single typo away from `foo(_:)`. > > IMO, after arbitrary expressions are removed from #selector, it is > straightforwardly a bug that `foo()` cannot be used to denote a function with > no parameters. > On Thu, May 5, 2016 at 10:59 Alex Hoppen via swift-evolution > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: > Say you have the function `foo() -> Int`. Then `foo()` calls `foo` and > returns its return value of type `Int` – not a reference to the function of > type `Void -> Int`. > > As to `_`: Like I stated in the proposal the underscore is already used in > functions to state that there is no parameter name. So I think it’s a natural > extension to also use it for saying that there are no arguments at all. > > – Alex > > > On 05 May 2016, at 17:21, David Sweeris <daveswee...@mac.com > > <mailto:daveswee...@mac.com>> wrote: > > > > What’s wrong with `foo()` again? To me, a `_` in the parameter list means > > that something is there, but the label doesn’t matter. > > > > - Dave Sweeris > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org <mailto:swift-evolution@swift.org> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution> > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution