[swift-evolution] Smart KeyPaths
Joe Groff
jgroff at apple.com
Fri Mar 17 17:44:09 CDT 2017
> On Mar 17, 2017, at 3:17 PM, Michael LeHew via swift-evolution <swift-evolution at swift.org> wrote:
>
>>
>> On Mar 17, 2017, at 3:08 PM, Matthew Johnson <matthew at anandabits.com <mailto:matthew at anandabits.com>> wrote:
>>
>>>
>>> On Mar 17, 2017, at 12:04 PM, Michael LeHew via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>
>>> Hi friendly swift-evolution folks,
>>>
>>> The Foundation and Swift team would like for you to consider the following proposal:
>>
>> This proposal is really incredible! It is an invaluable addition to the language - far better than simple first-class properties. I really can’t wait to see it implemented! The design looks very solid. I’m especially happy to see that a path to eventually get away from using classes has already been identified and planned for.
>>
>> Thank you so much for bringing this forward in Swift 4. It is a wonderful (and rather unexpected) surprise!
>>
>> Seeing this makes me *really* wish we had a way to get at a collection of `PartialKeyPath<Self>` for all the (visible) properties of a type. I guess the visible part of that makes it tricky. We can always work around it in the meantime.
>
> We had discussed that a future application where KeyPath's would make a lot of sense is with the Mirror API. Of course in the interest of the finiteness of time, we aren't pursuing that right now.
>
> One thing that gets interesting with the scope-restricted visibility of KeyPaths, is what happens if an fileprivate KeyPath gets leaked out of the file? That's a scary/maybe useful thing? But a complication that emerges pretty quick and thus another reason not to pursue that just now.
I think that's fine. It's no different from passing out a private function as a closure value, or passing out a value of a private type as a protocol existential or public base class instance.
-Joe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170317/09534579/attachment.html>
More information about the swift-evolution
mailing list