为什么TCPsocket在ruby 1.8.7中工作

时间:2015-02-26 19:39:51

标签: ruby tcpsocket

运行此代码

rvm 1.8.7,1.9.3-p547 do ruby -r socket -e "puts TCPSocket == TCPsocket"

为什么在ruby 1.8.7上这会回归真实?

1 个答案:

答案 0 :(得分:5)

一些源考古学显示originally the class was named TCPsocket(小写s)。后来它是renamed to TCPSocket(大写s),但是使用旧名称设置了一个常量。在Ruby 1.8.7中就是这种情况,因此对于那个版本TCPsocketTCPSocket引用了同一个类,因此它将相等。

稍后仍为original name was removed,只留下TCPSocket。从1.9开始就是这种情况,因此在使用TCPsocket的最新版本中会导致uninitialized constant错误。

至于为什么,我猜Matz最初使用TCPsocket后来意识到TCPSocket是一个更好的名字,但为了兼容性,将旧名称保留了一段时间。