Re: <https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md#referencing-key-paths>
> On 6 Apr 2017, at 04:13, Xiaodi Wu wrote: > >> On Wed, Apr 5, 2017 at 9:21 PM, Ricardo Parada wrote: >> >>> On Apr 5, 2017, at 9:41 PM, Brent Royal-Gordon wrote: >>> >>> It's worth noting that, if you write `\Person.name.valueType`, this syntax >>> is ambiguous—it could mean "make a key path for the `valueType` property on >>> `name` property of `Person`", or it could mean "make a key path for the >>> `name` property of `Person`, then access the key path's `valueType` >>> property". We can solve this by always interpreting it as the former and >>> requiring parentheses for the latter—that is, >>> `(\Person.name).valueType`—but I thought it was worth calling out >>> explicitly. >> >> Good point. >> >> I'm thinking about the hypothetical code examples from previous emails: >> >> let isPuppyQualifier = \Pet.type == .dog && \Pet.age < 12 >> let familyQualifier = (\Family.pets).contains(where: isPuppyQualifier) >> let familiesWithPuppies = Family.fetch(editingContext, familyQualifier) > > That's an interesting point. While `\` alone seems acceptable, I think it's > unfortunate that we'll have `(\...)` and `\(...)` both in the language. > Can we maybe consider instead: > > let firstFriendsNameKeyPath = \Person.friends[0].name\ 'Single quotes' (i.e. U+0027 APOSTROPHE) are available AFAIK: // Create a key path and use it let firstFriendsNameKeyPath = 'Person.friends[0].name' luke[keyPath: firstFriendsNameKeyPath] // "Han Solo" // or equivalently, with type inferred from context luke[keyPath: '.friends[0].name'] // "Han Solo" // [SE-0042][SR-3550] Unapplied method references 'String.lowercased()' // (String) -> String 'String.lowercased(with:)' // (String, Locale?) -> String Unlike the Lisp-style backtick, an apostrophe would appear on *both* ends of the key path (or method reference). -- Ben _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution