[swift-evolution] Smart KeyPaths

Daniel Müllenborn daniel.muellenborn at ymail.com
Sun Mar 26 06:39:21 CDT 2017


I had the same thoughts, the syntax should differ in some way from that of a static property. I find : very suitable as a symbol.
What I do not like -> or $, because it reminds me too much of PHP. The @ signs are somehow also unsuitable.

> > Le 19 mars 2017 à 16:41, Ricardo Parada via swift-evolution<swift-evolution at swift.org>a écrit :
> > 
> > I agree that they can get mixed up with static properties. However, I think I would not mind because it would only cause an ambiguity when having a static property with the same name as the property which would be an odd practice I think.
> I disagree. How the reader is supposed to now there is a static property or not ? Having readable code is more important than having easy to write code.
> 
> Without context, the following statement is ambiguous, This ambiguity can easily be avoid by choosing an other syntax. So why would we want to introduce it in the first place ?
> 
> let name = Person:friends[0].name
> 
> 
> 
> > I was defining static properties with the same name as the property in order to smart key paths. For example:
> > 
> > Class Person {
> > static firstName: KeyPath<String>(“firstName”)
> > static lastName: KeyPath<String>(“lastName”)
> > 
> > var firstName: String
> > var lastName: String
> > 
> > …
> > }
> > 
> > 
> > So that I could create qualifiers, ie. Person.firstName.like(“R*”), and sort orderings, Person.firstName.asc().
> > 
> > I think with these smart key paths the need for these static properties that mirror the property on the instance would not be required.
> > 
> > 
> > 
> > 
> > > On Mar 17, 2017, at 2:27 PM, Vladimir.S via swift-evolution<swift-evolution at swift.org>wrote:
> > > 
> > > On 17.03.2017 20:04, Michael LeHew via swift-evolution wrote:
> > > > Hi friendly swift-evolution folks,
> > > > 
> > > > The Foundation and Swift team would like for you to consider the following
> > > > proposal:
> > > > 
> > > > Many thanks,
> > > > -Michael
> > > > 
> > > > 
> > > > Smart KeyPaths: Better Key-Value Coding for Swift
> > > > ...
> > > 
> > > Just my 2 cents. FWIW, I feel like the proposed syntax is VERY confusing.
> > > 
> > > Person.friends[0].name - like access to static property. T.method can't have subscript for it and then some field. So, I believe such key paths deserve its own syntax.
> > > 
> > > luke[path] - very close to access the subscript of instance. In compare to T.method, we can call result of T.method(i.e. let m = T.method; m()), just like the T.method itself(foo.method()). But here we are calling some kind of subscript instead of access property by "path".
> > > 
> > > There is no some 'special' marker for me that saying "hey, there is references to properties used" from the first look.
> > > 
> > > Probably we can consider another separators, like
> > > 
> > > Person:friends[0].name
> > > luke:path
> > > 
> > > Person->friends[0].name
> > > luke->path
> > > 
> > > Person[friends[0].name] // single brackets for type
> > > luke[[path]] // double brackets for instance
> > > 
> > > Person at friends[0].name
> > > luke at path
> > > 
> > > or other with help of community.
> > > _______________________________________________
> > > swift-evolution mailing list
> > > swift-evolution at swift.org
> > > https://lists.swift.org/mailman/listinfo/swift-evolution
> > 
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution at swift.org
> > https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> 
> 


More information about the swift-evolution mailing list