It can be (more-or-less) solved in library code today:

extension NSObjectProtocol {
    public func with(@noescape fn: Self -> Void) -> Self {
        fn(self)
        return self
    }
}

This way, you can do, on NSObjects:

textLabel.with {
        $0.textAlignment = .Left
        $0.textColor = .darkTextColor()
}

I love this pattern.

You can also make it a function to make it work with any value of any kind (it 
will then take form of `with(foo) { …}`).

Ideally, if you could write a universal extension (something like `extension 
Any`), you could just add this behavior, with method syntax, to everything.

— Radek

> On 13 Apr 2016, at 15:15, 李海珍 via swift-evolution <swift-evolution@swift.org> 
> wrote:
> 
> I recently learned some VBA and I found a very conveniently `with` statement.
> 
> `with` statement can be helpful to set property for UIKit instance.
> 
> for instance a UILabel instance `textLabel` ,with `with` statement we can set 
> UILabel property like this
> 
> 
> 
> ```swift
> 
> with textLabel{
> 
> .textAlignment = .Left
> 
> .textColor = UIColor.darkTextColor()
> 
> .font = UIFont.systemFontOfSize(15)
> 
> }
> 
> ```
> 
> _______________________________________________
> 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

Reply via email to