动态类型,鸭子类型和参数多态性有什么区别?

时间:2013-01-31 12:20:22

标签: ruby language-agnostic

动态类型,鸭子类型,多态性和参数多态性有什么区别?

我问,因为Ruby有这些(according to Wikipedia),尽管我更感兴趣。

1 个答案:

答案 0 :(得分:1)

动态类型意味着您不需要定义变量的类型,语言解释器会尝试猜测该变量的类型(数字,布尔值,字符串等)。

鸭子打字意味着我们对对象的类型不感兴趣,而是我们更关注对象的功能方面:如果对象返回我们感兴趣的那些方法,那么这意味着该对象满足我们的要求。因此众所周知的短语:“如果一只鸟像鸭子一样走路,像鸭子一样游动,像鸭子一样呱呱叫,那只鸟就是鸭子”

来自Wikipedia参数多态是一种使语言更具表现力,同时仍保持完全静态类型安全的方法。使用参数多态,可以一般性地编写函数或数据类型,以便它可以相同地处理值,而不依赖于它们的类型。