Zmiana nazwy klasy String

Paolo Perrotta w książce Metaprogramming Ruby 2: Program Like the Ruby Pros w sekcji o stałych pisze:

You might be surprised to learn that a Ruby constant is actually very similar to a variable—to the extent that you can change the value of a constant, although you will get a warning from the interpreter.
(If you’re in a destructive mood, you can even break Ruby beyond repair by changing the value of the String class name.)

Czy chodziło mu aby zamiast:
“str”.class.name => “String” było “str”.class.name => “Foo”? jeśli tak to jak rozumiem wystarczy otworzyć klasę Class i nadpisać :name

Autorowi chyba chodziło o coś bardziej sensownego??

Raczej chodziło o String = Class.new

1 Like

Jasne, wtedy napiszemy String czystą klasą, próba użycia jej w konsoli zawiesza konsolę ;]

2.1.2 :003 > String = Class.new
(irb):3: warning: already initialized constant String
 => String
2.1.2 :004 > str = "foo"
/Users/usr/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/irb/ruby-token.rb:94:in `Token': undefined method `an
cestors' for "=":String (NoMethodError)
....
$