We had this kind of proposal earlier, didn’t seem to be very well received. I still think it would be a useful thing, but I’d do it as a statement (extension of do) that introduces new lexical scope (similar to self)
— Taras > On 13 Apr 2016, at 16:25, Sean Heber via swift-evolution > <swift-evolution@swift.org> wrote: > > This pair works pretty well, too, if you don’t mind free functions: > > func with<T>(inout this: T, @noescape using: inout T->Void) { using(&this) } > func with<T>(this: T, @noescape using: T->Void) { using(this) } > > It works either with classes or mutable structs if you call it correctly and > the type doesn’t matter. > > l8r > Sean > > >> On Apr 13, 2016, at 9:17 AM, Radosław Pietruszewski via swift-evolution >> <swift-evolution@swift.org> 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> 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 > > _______________________________________________ > 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