> 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