运行此代码
rvm 1.8.7,1.9.3-p547 do ruby -r socket -e "puts TCPSocket == TCPsocket"
Run Code Online (Sandbox Code Playgroud)
为什么在ruby 1.8.7上这是真的吗?
一些源考古学显示最初的类被命名TCPsocket(小写s).后来它被重命名为TCPSocket(大写s),但是使用旧名称设置了一个常量.这是Ruby 1.8.7中的情况,因此对于该版本TCPsocket并TCPSocket引用相同的类,因此将比较相等.
后来仍然删除了原来的名字,只留下了TCPSocket.从1.9开始就是这种情况,因此在最近的版本中使用TCPsocket会导致uninitialized constant错误.
至于为什么,我猜Matz最初使用TCPsocket并后来意识到这TCPSocket是一个更好的名字,但为了兼容性而保留旧名称一段时间.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |