行为定义回调和协议定义没有签名的方法.实现协议的模块应该为所有这些方法提供定义.使用行为的模块也是如此.什么是语义差异?
我能想到的一个区别是,协议只能针对单一类型实现一次,因为我们可以根据我们的要求多次实现模块的行为.我很清楚何时使用什么.除此之外还有其他区别吗?
sas*_*ric 39
协议是基于类型/数据的多态性.当我打电话时Enum.each(foo, ...),具体的枚举是根据类型决定的foo.
行为是一种无类型插件机制.当我调用时GenServer.start(MyModule),我明确地MyModule作为插件传递,并且通用代码GenServer将在需要时调用此模块.
| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |