[swift-evolution] SE-0062 Referencing Objective-C key-paths
dgregor at apple.com
Tue Apr 12 11:35:14 CDT 2016
> On Apr 7, 2016, at 9:34 PM, Les Pruszynski via swift-evolution <swift-evolution at swift.org> wrote:
> This is my first post on this list so please bear with me.
> I very much like this proposal but what bothers me is this doubling of valueForKeyPath(#keyPath(xxx) in the signature of the function.
> chris.valueForKeyPath(#keyPath(Person.bestFriend.lastName)) // => Groff
> chris.valueForKeyPath(#keyPath(Person.friends.firstName)) // => ["Joe", "Douglas"]
> I’m not sure whether the form below is actually possible. For me it reads more naturally and is more consistent with “Modern Swift” as far as I know.
> chris.valueFor(#keyPath(Person.friends.firstName)) // => ["Joe", "Douglas”]
> or maybe
> chris.valueOf(#keyPath(Person.friends.firstName)) // => ["Joe", "Douglas”]
If key paths were some stronger type (as Brent is suggesting), we could do this. However, because key paths are just Strings, we need to compensate for weak type information <https://swift.org/documentation/api-design-guidelines/#promote-clear-usage>, so valueForKeyPath should retain it’s currently name despite the redundancy in many use sites with #keyPath.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution