[swift-evolution] Smart KeyPaths
Matthew Johnson
matthew at anandabits.com
Wed Mar 22 10:47:33 CDT 2017
> On Mar 22, 2017, at 10:36 AM, Vladimir.S via swift-evolution <swift-evolution at swift.org> wrote:
>
> On 22.03.2017 17:37, Ricardo Parada wrote:
>>
>>
>>> On Mar 22, 2017, at 9:30 AM, Vladimir.S <svabox at gmail.com> wrote:
>>>
>>> let path = @Bag.things[0].name
>>>
>>> bag at path
>>> bag at .things[0].name
>>> bag at Bag.things[0].name
>>> bag.things[0]@.name
>>> bag.things[0]@Thing.name
>>
>> It sounds like the @ character is serving two different purposes which confused me at first.
>>
>> If I understood correctly, you are using it to get the key path but also to apply the key path to the bag struct and get the corresponding value.
>>
>
> Yes. And the initial proposal suggest the following syntax accordingly:
>
> let path = Bag.things[0].name
> bag[path]
> bag[.things[0].name]
> bag[Bag.things[0].name]
> bag.things[0][.name]
> bag.things[0][Thing.name]
# makes a lot more sense than @ as a sigil. It follows from #selector and #keyPath. These are the most similar language features right now where the compiler produces special values. I think it’s also worth noticing that values produced by #selector and #keyPath are used in normal ways. There is no magic syntax for their use, just a typed value. If we’re going to make a change we should use # instead of `.` for accessing these special values but we should stick with subscript for use.
> _______________________________________________
> 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/20170322/d29254d9/attachment.html>
More information about the swift-evolution
mailing list