Le 30 déc. 2015 à 16:40, Kevin Ballard via swift-evolution
<[email protected]> a écrit :
> On Wed, Dec 30, 2015, at 01:33 PM, Joe Groff wrote:
>> Another possibility I've thought of is defining `defer { val }` to guarantee
>> that val remains alive until the defer fires on scope exit. That might let
>> us leave `defer` as the one "guarantee something happens exactly at scope
>> exit" language construct.
>
> Oh that's cute. I'd probably want to say `defer { _ = val }` though, to make
> it obvious that this is intentional.
Or you could make it even more obvious what this is by giving that feature a
name. For instance:
defer { _fixLifetime(val) }
The good thing about this one is that it already works, because that's what
`withExtendedLifetime` does internally. Also, if you search a bit, you'll end
up here with a nice explanation of what that function does.
https://github.com/apple/swift/blob/8d9ef80304d7b36e13619ea50e6e76f3ec9221ba/stdlib/public/core/LifetimeManager.swift#L45
So why not simply remove the underscore?
--
Michel Fortin
https://michelf.ca
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution