鸭子类型 - 当您需要具体类型时该怎么办?
假设您正在使用动态语言(Python 等)制作计算器,并且您有一个 add 方法。
def Add(x, y)
print x + y
现在,如果您要传递除数字之外的任何内容,那将是错误的,因此您需要进行一些数据类型检查。
Duck Typing 是关于对象而不是像上面的例子那样的参数吗?
有人能进一步解释一下吗?
编辑
我所说的对象是指:
Person.Quack()
Duck.Quack()
不关心传递给方法的内容。
Say you are doing a calculator in a dynamic language (Python etc...) and you have an add method.
def Add(x, y)
print x + y
Now if you were to pass in anything but a number that would be wrong, so you need some datatype checking.
Is Duck Typing about objects as opposed to parameters like the above example?
Could anyone explain further?
Edit
By objects I mean:
Person.Quack()
Duck.Quack()
With no care about what gets passed into methods.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
鸭子类型是指不关心您正在使用的对象是什么,只要它们支持必要的操作即可。 因此,如果 + 是字符串连接,那么将字符串传递给 Add 就可以了。 如果日期支持 + 操作,那么传递日期也可以。
Duck typing is about not caring what the objects you're working with are as long as they support the necessary operations. So if + is string concatenation then passing strings to Add would be fine. If dates support the + operation then passing dates would be fine as well.