[swift-evolution-announce] [Accepted] SE-0111: Remove type system significance of function argument labels

so how you call bar and get default values for a, b, c? why lost default value for that function? it is wired.


在 2016年7月7日,11:29,Douglas Gregor <dgregor@apple.com> 写道:

On Jul 6, 2016, at 8:25 PM, Cao, Jiannan via swift-evolution <swift-evolution@swift.org> wrote:

Don't agree with this one.

func foo(a: Int = 0, b: Int = 1, c: Int = 2) {
print(a, b, c)

foo(a: 1, c: 3)

let bar = foo

bar(1, 3) will different than foo(a: 1, c: 3)

bar(1, 3) will result in an error, because “bar” is of type

  (Int, Int, Int) -> Void

Default arguments are associated with function declarations, not function types.

  - Doug

在 2016年7月7日,11:06,Chris Lattner <clattner@apple.com> 写道:

Proposal Link: swift-evolution/0111-remove-arg-label-type-significance.md at master · apple/swift-evolution · GitHub

The review of "SE-0111: Remove type system significance of function argument labels " ran from June 30 ... July 4, 2016. The proposal has been *accepted*:

The community and core team agree that this proposal will lead to a simplification and clarification of the type system, as well as a more clear user model for parameter labels. In response to community feedback, the core team is accepting the proposal with a revision to allow “purely cosmetic” parameter labels in closure types for documentation (as outlined in the alternatives section). The core team also wants to clarify that a call to a value of closure type would not allow use of any parameter labels, some interpretations thought that “arbitrary” parameter labels could be used.

Thank you to Austin Zheng for driving this discussion forward! I filed SR-2009 to track implementation work on this.

-Chris Lattner
Review Manager

swift-evolution-announce mailing list

swift-evolution mailing list