多态性是向不同类型的实体提供单一接口。本质上,它允许不同的数据类型响应相同的函数。因此,相同的函数为不同的数据类型完成相同的行为。Elixir语言有‘协议’和简洁的方式实现多态性。
让我们实现一个基本的协议,它将开氏和华氏温度转换为摄氏温度。
|
|
现在,我们实现了开氏和华氏温度的转换。
让我们尝试一些转换:
|
|
让我们试着转换没有实现to_celsius函数的任何其他数据类型:
|
|
如果你想要转换所有数据类型,你可以为Any这个数据类型定义一个实现。最后,如果你有时间,请阅读 Enum 和 String.Char 的源码,它们是Elixir核心代码里多态性的好例子。
原文链接: https://medium.com/@mustafaturan/polymorphism-in-elixir-cd0c765b6929#.d09i4bf56