> On Mar 22, 2017, at 10:36 AM, Vladimir.S via swift-evolution 
> <[email protected]> wrote:
> 
> On 22.03.2017 17:37, Ricardo Parada wrote:
>> 
>> 
>>> On Mar 22, 2017, at 9:30 AM, Vladimir.S <[email protected]> wrote:
>>> 
>>> let path = @Bag.things[0].name
>>> 
>>> bag@path
>>> [email protected][0].name
>>> [email protected][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
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to