所有动态语言都支持鸭子打字吗?
所有动态语言都支持鸭子打字吗?
我认为PHP支持duck typing。是这样的吗?
没有找到相关结果
已邀请:
3 个回复
浆错
孤捷侩
,编译器会将
的类型推断为
,但是您不能声明
,这将引发错误。 动态类型意味着您不必声明变量的类型,并且可以更改变量的类型。在红宝石中,你可以跟
跟
,完全没有问题。 Duck typing是一个不同的概念,几乎只适用于面向对象的语言。在使用Duck类型的语言中,不会检查方法的参数类型,因此只要响应它接收的任何调用,您传递给方法的任何类型都是可接受的。 所以,例如:
方法quacker将采用Duck或FauxDuck,因为任何一个将响应
虽然大多数面向对象的动态类型语言也是鸭子类型,但它不是必需的。您可以使用一种语言来声明方法调用的类型并对其进行强制执行,但仍然是动态类型的 - 请记住,动态类型只是意味着您可以在定义对象后更改对象的类型。 在假设的非鸭型红宝石
我不知道你为什么要这样做,但这是语言设计师可以选择的。
呕蹿尉