В Ruby нет такого понятия, как имя класса.Классы - это просто объекты, как и любой другой объект, который присваивается переменным, как и любая другая переменная.
Trung.NguyenThe
не является допустимым именем переменной, поэтому это невозможно:
class Object
klass = Class.new do
def to_s; 'Hello' end
end
const_set :'Trung.NguyenThe', klass
# NameError: wrong constant name Trung.NguyenThe
end
Вы может , конечно, создать объект, который отвечает на сообщение NguyenThe
с классом, и назначить этот объект переменной с именем Trung
, но это не то, о чем вы спрашиваете:
klass = Class.new do
def to_s; 'Hello' end
end
(Trung = Object.new).define_singleton_method(:NguyenThe) { klass }
puts Trung.NguyenThe.new
# Hello
В C # и Java точки также недопустимы в именах классов.C # имеет механизм экранирования, который позволяет вам использовать в качестве имен зарезервированные слова, но этот механизм не позволяет использовать недопустимые имена, только зарезервированные.
Существуют предложения по большей символической свободе в именах Java, но до сих пор они еще не реализованы.