[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