[swift-evolution] [Proposal Draft] automatic protocol forwarding
Brent Royal-Gordon
brent at architechies.com
Tue Dec 29 15:08:55 CST 2015
> I have completed a first draft of a proposal to introduce automatic protocol forwarding. I’m looking forward to feedback from everyone!
Some things I don't see discussed here:
* Does it have to be a protocol? Why not also allow the concrete type of the property you're forwarding to? Obviously you couldn't form a subtype relationship (unless you could...), but this might be useful to reduce boilerplate when you're proxying something.
* Why the method-based conversion syntax for return values, rather than something a little more like a property declaration?
var number: Int
forward IntegerType to number {
static return(newValue: Int) {
return NumberWrapper(newValue)
}
return(newValue: Int) {
return NumberWrapper(newValue)
}
}
* If you want to keep the method-based syntax, why use the `init(_:)` initializer instead of one specifically for forwarding, like `init(forwardedReturnValue:)`?
* If you want to keep the method-based syntax, why do all forwards, even to different members, share the same transformation method? Wouldn't it be better to have, for instance, `init(returnedNumber:)` and `transformedReturnedNumber(_:)`, so that forwards to other properties could use different logic?
* If you want to keep the method-based syntax, would it make sense to instead have an initializer for instance initializers too, and just have it take a second parameter with the instance?
init(forwardedReturnValue: Int) {...}
init(forwardedReturnValue: Int, from: NumberWrapper) {...}
* Does this mean that a `public forward` declaration would forward `internal` members through synthesized `public` interfaces, if the forwarder and forwardee happened to be in the same module?
> All synthesized members recieve access control modifiers matching the access control modifier applied to the forward declaration.
* You don't explicitly mention this, but I assume mutating methods work and mutate `self`?
--
Brent Royal-Gordon
Architechies
More information about the swift-evolution
mailing list