7

我习惯于动态类型,这意味着在运行时检查对象/非面向对象结构的类型信息并抛出某种类型错误,即如果它像鸭子一样嘎嘎叫,那就是鸭子。是否有不同类型的动态类型(请详细说明)。

4

2 回答 2

5

是的,一点没错。Duck-typing 是一个习惯用法,它表示此时值的类型基于它现在拥有的字段和方法。动态类型只是说类型与运行时值相关联,而不是与静态变量和参数相关联。两者之间是有区别的,你可以使用后者而不使用前者。

例如,如果您使用 PHP 编程并限制自己使用基本类型而不使用 OO,那么您将使用动态类型而不使用鸭子类型。

于 2010-11-09T12:56:40.907 回答
1

不,动态类型是指值具有类型但变量没有类型,因此大多数类型检查是在运行时完成的。所以,基本上,如果值像鸭子一样走路或嘎嘎叫,它就是鸭子,否则会抛出错误。鸭子类型实际上只是描述了动态类型的一个特性,它确保它是类型安全的(即,一个方法只有在变量foo' 具有正确的属性或可以执行该方法时才会运行)。

于 2010-08-01T14:45:49.047 回答