on Tue Jun 06 2017, Brent Royal-Gordon <swift-evolution@swift.org> wrote:
>> On Jun 6, 2017, at 9:06 AM, Xiaodi Wu <xiaodi...@gmail.com> 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 IIUC this has nothing to do with "advancing", though. Maybe "applying" or even "map" would be a better name? -- -Dave _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution