On Tue, Oct 22, 2013 at 12:19 PM, Benjamin (Inglor) Gruenbaum <
[email protected]> wrote:

> Dean Landolt <[email protected]> wrote:
> > Say you have an object for which you want to implement the Cowboy and
> Canvas protocols (to borrow /be's favorite example). Both implement a
> "draw" method, but when you try to import from both protocols you'll
> naturally have to rename one or both. Now say you want to override Cowboy's
> `draw` method on an instance? You'll end up clobbering the Canvas
> protocol's draw method with the obviously wrong function. Not cool. This
> can be easily corrected with Symbols.
>
> I'm not sure I understand the example. What does a Cowboy's draw method
> do? Is it a specification of the Canvas protocol draw ?
>

They are two entirely different protocols.


> (In that case `.extend`ing the protocol seems to solve it). If you have a
> more concrete use case that would really help.
>

Picture any two protocols that share a method name. Think of another
protocol with a "map" method that means something entirely different from
Collections.methods.map. The specifics aren't important -- just the idea
that these are two independent protocols. You don't want to override a
method of one and accidentally override the other.


> I don't see how this is any different from other variables and general
> naming conflict issues when destructuring.
>
>
The difference is that protocols purport to solve this confusion problem --
it's one of their primary motivations.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to