> On Jun 6, 2017, at 9:06 AM, Xiaodi Wu <[email protected]> wrote:
> 
> Why would this be an extension on UnsafePointer and not KeyPath?

1. I can't come up with a name as good as `advanced(to:)` that would be 
attached to the key path. I use `advance(_:)` in the other two reasons below, 
but I don't think it's nearly as clear about what it's doing to the pointer.

2. Passing the pointer as the parameter would encourage use of `&`, which would 
be invalid.

        (\CGRect.origin.y).advance(&myRect)             // Pointer might be to 
a temporary
        (&myRect).advanced(to: \.origin.y)                      // Rejected 
during compilation because & is not allowed there

3. Passing the key path as a parameter improves the code's appearance when you 
specify the key path in the expression.

        myRectPtr.advanced(to: \.origin.y)
        (\CGRect.origin.y).advance(myRectPtr)           // Requires explicit 
type name and extra parentheses

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to