> Caveat: this is going to be strongly-worded; sorry in advance. I think
> (no offense intended) it's a terrible idea. The whole notion of an
> “optional requirement” is nonsensical to begin with, and the use of
> optional protocol requirements encourages a style of programming that
> lifts the responsibility of the protocol designer for careful design at
> the expense of clients of the protocol. There are better ways to do
> things; let's not propagate this anti-pattern any further than it's
> already gone.
This is why my suggestion to solve this required the protocol to include
default values for any optional function with a return value - I don’t think
that a function should be optional as in “no presence” or even in a way that
the caller can identify if the function is or isn’t defined, but just optional
as in “it has a clear documented default.” I don’t agree that the caller of an
optional protocol function should be able to tell if the function is present or
not - the protocol itself should be defined as if all functions are there, but
the “optional-ness” is then no worse than default values on function parameters
- but that might just be me.
Perhaps a better term for my way of thinking about it would be “default” rather
than optional:
protocol UIGestureRecognizerDelegate {
default func gestureRecognizerShouldBegin(gestureRecognizer:
UIGestureRecognizer) -> Bool = true
// etc
}
l8r
Sean
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution