Jer*_*ith -1 ruby oop duck-typing
这真的让我感到困惑,似乎一次又一次地遇到ruby原生数据类型中的方法,它们做同样的事情(本质上),但却有不同的名称.如果ruby和ruby社区强烈鼓励鸭子打字,为什么这些方法在各种类型中的命名一致?
sep*_*p2k 11
你似乎暗示Hash没有length方法和/或其他枚举没有count方法.事实并非如此.
count是Enumerable模块中定义的方法,因此可用于所有可用的枚举.它不同于size并length在以下几个方面:
O(n)用于那些没有(并且总是当给出一个块当然).length和size(它们是同义词)是在所有可枚举类上定义的方法,用于跟踪它们的大小(包括Hash).它们与计数的不同之处在于它们总是及时返回长度O(1)并且不会阻塞.
总结:您可以调用length或size跟踪任何跟踪其大小的对象,并且可以调用count任何可枚举的对象.所以鸭子打字不会受到任何阻碍.