> On Mar 17, 2017, at 6:38 PM, Joe Groff via swift-evolution
> <[email protected]> wrote:
>
>
>> On Mar 17, 2017, at 12:34 PM, David Hart via swift-evolution
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>> Sent off-list by mistake:
>>
>> Nice proposal. I have a few comments inline:
>>
>>> On 17 Mar 2017, at 18:04, Michael LeHew via swift-evolution
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> Use/Mention Distinctions
>>>
>>> While methods can be referred to without invoking them (let x = foo.bar
>>> instead of let x = foo.bar()), this is not currently possible for
>>> properties and subscripts.
>>>
>>> Making indirect references to a properties' concrete types also lets us
>>> expose metadata about the property, and in the future additional behaviors.
>>>
>> What metadata is attached? How is it accessed? What future features are you
>> thinking about?
>
> To begin with, you'd have limited ability to stringify a key path. Eventually
> we'd like to support other reflectiony things, including:
>
> - Asking for the primary key paths a type supports
> - Asking for a key by name or index
> - Breaking a key path down by components
This might be my new favorite Swift feature. <3 It seems obvious in retrospect,
which is surely a sign of its genius.
I would LOVE to be able to get the individual components in a path. Even if it
were just the names, that would let me do some things that I’ve been itching to
do in Swift. If the types were exposed in a type-erased container, that would
be even better.
Something like this would be plenty of information to accomplish my goals:
class AnyKeyPath {
…
struct Key {
let name: String
let rootType: Any.Type
let valueType: Any.Type
}
private(set) var keys: [Key]
}
But even stringifying a key path would probably let me do most of what I
wanted. I’d just need to (somewhat awkwardly) split on `.`s and handle
subscripts. You mentioned that we’d have “limited” ability to stringify a key
path. Can you elaborate on what that means or what the limitations would be?
Matt
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution