名词解释 : 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。例如,一个迭代器不能继承来自某个迭代器基类的方法。

转载于:https://www.cnblogs.com/yoshow/archive/2007/12/06/984989.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值