> 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
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution