[swift-evolution] Request for Discussion: Setup closures
Kevin Ballard
kevin at sb.org
Fri Dec 4 18:52:41 CST 2015
I'd be in favor of a solution like the '..' operator. Using a block-
based syntax for this seems like it's already close enough to defining
something like
func with<T>(x: T, @noescape _ f: inout T -> Void) -> T { var value =
x f(&value) return value }
that it would be better to just go with the function instead of
complicating the Swift syntax. But the '..' operator has some nice
properties, such as being able to say something like
someLayoutConstraint =
label.leftAnchor.constraintEqualToAnchor(view.leftAnchor)..active = true
(I'm assuming here that '..' works by returning the receiver as the
value of the subsequent expression, rather than merely allowing several
'..' operators to be chained together, but I'm not actually familiar
with how this works in Smalltalk and Dart)
-Kevin Ballard
On Fri, Dec 4, 2015, at 01:27 PM, Joe Groff wrote:
> In Smalltalk and Dart, you can do this with method cascades, which
> apply multiple methods to the same 'self'. In Dart they use '..'
> for this:
>
> let task = NSTask() ..launchPath = "..." ..arguments = [...]
> ..standardOutput = pipe
>
> The nice thing about that is that it's a bit more generally applicable
> than just initialization.
>
> -Joe
>
>
> _________________________________________________
> swift-evolution mailing list swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151204/64b7101e/attachment.html>
More information about the swift-evolution
mailing list