From: Navindra Umanee Date: 2005-01-30T14:59:23+09:00 Subject: Re: Ten Things Every Java Programmer Should Know About Ruby Joao Pedrosa wrote: > > An object in Ruby may even change its type from one moment to the > > other. A Socket object may suddenly become a File object. > > dewd@heaven:~ $ irb > irb(main):001:0> a = b = "ccc" > => "ccc" > irb(main):002:0> a = 1 > => 1 > irb(main):003:0> a == b > => false > irb(main):004:0> b > => "ccc" Why give an uninteresting fake example, when I already gave a concrete real example where an object changes its type from Socket to File? irb(main):001:0> require 'socket' => true irb(main):002:0> file = File.new("/dev/full") => # irb(main):003:0> socket = TCPSocket.new("www.ruby-lang.org", 80) => # irb(main):005:0> mutant_object_pointer = socket => # irb(main):006:0> mutant_object_pointer => # irb(main):007:0> mutant_object_pointer.class => TCPSocket irb(main):008:0> socket.reopen(file) => # irb(main):009:0> mutant_object_pointer => # irb(main):010:0> mutant_object_pointer.class => File Cheers, Navin.