/ / Prečo pracuje TCPsocket v rubíne 1.8.7 - ruby, tcpsocket

Prečo pracuje TCPsocket v rubíne 1.8.7 - rubín, tcpsocket

Spustite tento kód

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

Prečo na rubíne 1.8.7 sa to vráti ako pravda?

odpovede:

5 pre odpoveď č. 1

Trochu zdrojová archeológia to dokazuje pôvodne bola pomenovaná trieda TCPsocket (s malým písmenom s). Neskôr to bolo premenovaný na TCPSocket (veľké písmená s), ale konštanta bola nastavená so starým menom. To bol prípad Ruby 1.8.7, takže pre túto verziu TCPsocket a TCPSocket odkazovali na tú istú triedu a porovnali by to rovnako.

Neskôr ešte pôvodný názov bol odstránený, ponechať len TCPSocket, To je prípad od 1.9, takže v najnovších verziách TCPsocket bude mať za následok a uninitialized constant chyba.

Pokiaľ ide o dôvod, myslím, že Matz pôvodne používal TCPsocket a neskôr si to uvedomil TCPSocket bol lepší názov, ale starý názov mal na chvíľu k dispozícii kompatibilitu.