On 22.03.2017 18:47, Matthew Johnson wrote:
On Mar 22, 2017, at 10:36 AM, Vladimir.S via swift-evolution
<[email protected] <mailto:[email protected]>> wrote:
On 22.03.2017 17:37, Ricardo Parada wrote:
On Mar 22, 2017, at 9:30 AM, Vladimir.S <[email protected]
<mailto:[email protected]>> wrote:
let path = @Bag.things[0].name
bag@path
[email protected][0].name
[email protected] <mailto:[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.
Could you clarify, what do you suggest? Something like this:
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]
,and so
let ref = Bag#foo()
?
In this case I feel like the following will be more clean syntax:
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]
let ref = #Bag.foo()
And why subscript is the only good candidate for use?
Actually, for me personally, any solution will be good as soon as it
contains some 'marker' which saying "hey, here key paths are used. be aware."
_______________________________________________
swift-evolution mailing list
[email protected] <mailto:[email protected]>
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution