+1 on statement vs lexical scope. additionally { $0.something ... } is more
explicit than just .something.
On 13.04.2016 17:36, Taras Zakharko via swift-evolution wrote:
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
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution