名词解释 : Duck typing
Duck typing:在计算机科学中,duck typing是动态类型的一种形式:变量的值自身隐含地判定了变量的行为。这暗示了某个对象与其它实现了相同接口的对象之间是可交换的,不管对象之间是否具有继承关系。duck typing是某些编程语言的特性:如Smalltalk, Python, Ruby, ColdFusion。
duck typing是对鸭子测试(duck test)的一个引用——“如果它走路像鸭子,那么也一定像鸭子一样呷呷地叫,那么它必定是一只鸭子”。
Alex Martelli通过在comp.lang.python新闻组上发布的信息,被认为是这个名词的发明人。
在Smalltalk中,任何对象在运行时都可与其它对象进行交换。这是动态类型中最灵活的。Duck typing尝试限制这个灵活性以去除在运行时之前可能的错误源。Smalltalk框架师们探求实现真正的多态性,不惜在运行时可能引入错误的代价。而在实际中,这些错误在运行时可以通过SUnit测试被检测到。
抽象数据类型是动态接口,它只存在于保证(guarantee)、纸面上、特定的接口中。Smalltalk以变化的方式使用纯粹的动态机制去在实践中扩展guarantee。这和在catch机制中的广义的“method not found”异常处理器一样简单。但它能调用扩展语言或者环境,比如StrongTalk。并行于Smalltalk的异常处理,在Java和 Python中被称为duck typing,一种单一的有原因的语法提升。
C++模板实现了一种静态的duck typing。例如,一个迭代器不能继承来自某个迭代器基类的方法。
-*- 此文章为本人发呆时 ctrl+c , ctrl+v 的结果. 如果损害到您的利益, 可以联系我 QQ: 248078462 -*-