在一些文献中,我读到Javascript中的变量支持Duck类型,而PHP中的变量支持Type杂耍。我对此有点困惑,因为在Javascript和PHP中声明变量时似乎很相似。这些术语之间的主要区别是什么?
发布于 2018-12-06 14:11:51
我认为您正在混合:类型杂耍,如PHP文档所解释的,是关于在需要时自动将转换成更适合的类型的值的灵活性。例如,以下功能运行良好:
$a = "42"; // now $a is a string
$a = $a + 42; // now $a is an integer
$a = $a + 23; // now $a is still an integer
$a = $a + 1.3; // now $a is a float另一方面,鸭子类型是关于对象本身是如何行为的问题:
如果它看起来像鸭子,游泳像鸭子,叫声像鸭子,那么它很可能是鸭子。
如果一个对象有适当的方法,我们可以假设它是一个特定的类型。如果它像鸭子一样包含quack或swim方法,那么它可以是鸭子。特别是对于JS,在Example of Javascript Duck Typing?中有一些很好的例子--这里不涉及类型转换。
https://stackoverflow.com/questions/53653064
复制相似问题