Нет, не возможно.Объекты не могут менять свои классы в Ruby.
Например, в Smalltalk вы можете использовать become:
:
becomeSubStrings: aString
self become: (self subStrings: aString).
Если вы называете это так:
s := 'qwerty'.
s becomeSubStrings: 'e'.
Теперь s
- это массив:
Transcript show: s printString.
Результат:
#('qw' 'rty')
Технически, become:
не меняет класс объекта,скорее это позволяет одному объекту стать другим объектом.В этом случае мы позволяем self
стать результатом self subStrings:
, который разбивает строку на массив подстрок.Результат тот же: исходный строковый получатель теперь является массивом.