Than you for sharing this method. So, do you suggest to not have this "with" construction in Swift just because we *can* implement the same behavior by using some workarounds/hacks?

I.e. do you support this proposal or don't?
Do you agree that such built-in feature will be very useful and make our programming live a little better/easier?

I strongly believe that if such feature is really useful and handy, if it is explicit and if it is clearly showing in code what we are doing - we most likely want to have this feature as part of language rather than possibility to use some workaround to implement it.

With your suggestion, how to deal with two separate classes that have no common protocol? I.e.
class A { .. }; class B {..};
Should we conform them to some protocol or create extension of each just to have this "with" feature? Don't think so.

On 13.04.2016 17:17, Radosław Pietruszewski via swift-evolution wrote:
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 <mailto: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 <mailto: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

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to