[swift-evolution] [Returned for revision] SE-0161: Smart KeyPaths: Better Key-Value Coding for Swift

David Smith david_smith at apple.com
Wed Apr 5 19:32:56 CDT 2017


The rationale for using the same syntax is that a KeyPath is an unapplied property/subscript access. Even the multi-segment part of it isn't necessarily dissimilar: I don't think it would be unreasonable to imagine that \Foo.someMethod.someOtherMethod could work*, that'd just be function composition after all.

KeyPath : Properties/Subscripts :: Functions with a self argument : Methods

	David

*not proposing this, haven't thought carefully about whether there are edge cases I'm missing here, but I think the analogy holds

> On Apr 5, 2017, at 5:16 PM, Patrick Smith via swift-evolution <swift-evolution at swift.org> wrote:
> 
> I too find the backslash odd, as it’s usually of course used to escape something.
> 
> What about three periods?
> 
> let firstFriendsNameKeyPath = Person...friends[0].name
> print(luke[keyPath: ...friends[0].name])
> 
> 
> I also find wanting to use the same syntax for unapplied methods strange, as they would product two totally different things: one a key path value, the other a function.
> 
> Patrick
> On Thu, 6 Apr 2017 at 10:00 am, Douglas Gregor via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> On Apr 5, 2017, at 4:55 PM, Colin Barrett <colin at springsandstruts.com <mailto:colin at springsandstruts.com>> wrote:
>> 
>> Is the choice of backslash up for review? I think another operator,
> 
> We talked through basically everything on the keyboard, and there really aren’t other options that don’t stomp on existing behavior.
> 
>> perhaps backtick (`), would work better.
> 
> Backtick (`) is already taken for escaping identifiers, e.g., 
> 
> 	var `func` = { /* some code */ }
> 
> 	- Doug
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170405/15050c63/attachment.html>


More information about the swift-evolution mailing list