2017-01-05 6 views
-1

Каков тип данных имени класса? Или в правильных терминах, каков класс этой константы? Постоянный класс или модуль в рубине?Что такое тип данных (класс) имени класса в рубине?

class Abc 
end 

Что такое Abc?

+1

'Abc' является константой, но также является классом и, следовательно, модулем и объектом :-) – Stefan

+0

@Stefen может, пожалуйста, поделиться ссылкой, потому что многие другие комментарии противоречат этому. – ancho

+4

Конечно: 'определено? AbC# => "constant" и 'Abc.is_a? Класс # => true' и 'Abc.is_a? Module # => true' и 'Abc.is_a? Объект # => true' – Stefan

ответ

1

Так какой же тип данных этой константы i.e.-string, integer.

класс является экземпляром класса Class.

Вы можете проверить это (как и с любым другим объектом, просто вызовите .class на него):

Abc.class 
#=> Class 

постоянен класс или модуль в Ruby?

Ни то, ни другое. Константа - постоянная. Константа присвоила значение.

+0

Итак, постоянна ли определенная сущность в рубине? – ancho

+1

@ancho точно так же, как «переменная». – Stefan

+1

Класс класса «Класс». Класс имени класса обычно 'String', иногда' Symbol'. – sawa

3

Каков тип данных имени класса?

Что вы подразумеваете под "class name"? Классы действительно не имеют имен в Ruby. Классы имеют метод name, который возвращает человеко-читаемое имя для класса как String.

Или в правильном смысле, что такое класс этой константы? Постоянный класс или модуль в рубине?

Ни то, ни другое. Константы не являются объектами в Ruby, поэтому они не имеют класса. (Это то же самое, что и во всех других языках.)

Что такое Abc?

Постоянная ссылка на объект класса Class.

Кстати: я заметил, что вы использовали термины «тип» и «класс» взаимозаменяемо, но это не так. Типы и классы - это разные вещи.

+0

«Abc - это константа, которая ссылается на объект класса Class». Означает ли это, что константа Abc содержит ссылку на объект класса Class? – ancho

+1

№ 'Abc' содержит ссылку на объект, который является * экземпляром класса' Class'. –

Смежные вопросы