[swift-evolution] [Idea] Custom default names for arguments of closures
Eugene Gubin
hemet.mail at gmail.com
Sat Feb 13 14:38:47 CST 2016
Right now Swift provides shorthand argument names ($0, $1 etc) by default
which could be overriden with more specific names. I think it would be nice
to define our own default names as part of type definition:
typealias Closure = (first one: String, second two: String) -> Void
func executeClosure(closure: Closure) {
// the caller uses external parameter names, nothing changed here
closure(first: "first", second: 2)
}
executeClosure {
// the callee uses custom arguments instead of $0, $1
// also it is possible to override these names here as usual
print("one \(one) two \(two)")
}
This feature is backward compatible in that way what both
typealias Closure = (first: String, second: String) -> Void
and
typealias Closure = (String, String) -> Void
will provide the same behavior like now.
Possible applications: providing default argument names more meaningfull
than $0, $1, DSL-like constructions.
Possible problem: names could overlap. Nothing new. $0, $1 could overlap
too. Override argument names or variable names in a scope.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160213/05505574/attachment.html>
More information about the swift-evolution
mailing list