> 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
