Agree. Another question. If `Bag` does have a static thing called `myStaticThingy` would you refer to it as:
Bag.Type#myStaticThingy ? > On Mar 22, 2017, at 12:37 PM, Matthew Johnson <[email protected]> wrote: > >> >> On Mar 22, 2017, at 11:16 AM, Ricardo Parada <[email protected] >> <mailto:[email protected]>> wrote: >> >> I see three possibilities: >> >> 1) # + «space» +«path» like this: >> >> let path = # Bag.things[0].name >> bag[path] >> bag[# Bag.things[0].name] >> bag[# .things[0].name] // Root is inferred as Bag >> bag.things[0][# Thing.name] >> bag.things[0][# .name] // Root is inferred as Thing >> >> 2) # + «path» like this:: >> >> let path = #Bag.things[0].name >> bag[path] >> bag[#Bag.things[0].name] >> bag[# .things[0].name] // Root is inferred as Bag >> bag.things[0][#Thing.name] >> bag.things[0][#.name] // Root is inferred as Thing >> >> 3) «Root» + # + «path» like this: >> >> let path = Bag#things[0].name >> bag[path] >> bag[Bag#things[0].name] >> bag[#things[0].name] >> bag.things[0][#name] >> bag.things[0][Thing#name] > > I prefer the third option. I don’t think we should go with the first option. > Allowing (or requiring) a space seems likely to be confusing. Both the > first and the second still have potential to be confusing. If `Bag` has a > static property named `things` people could be confused about what > `#Bag.things` refers to. If we’re going to use a special sigil it should be > positioned such that it eliminates potential for that kind of confusion. > >> >> >> >>> On Mar 22, 2017, at 11:47 AM, Matthew Johnson <[email protected] >>> <mailto:[email protected]>> 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. >>> >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> [email protected] <mailto:[email protected]> >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
