Как извлечь имя класса из его объекта?Название класса по его объекту
Например, у меня есть объект @list, который, как я знаю, является экземпляром класса List. Но как я могу извлечь это непосредственно в коде?
Как извлечь имя класса из его объекта?Название класса по его объекту
Например, у меня есть объект @list, который, как я знаю, является экземпляром класса List. Но как я могу извлечь это непосредственно в коде?
Этот вид информации является довольно простым рубиновым программированием. Ответ:
object.class
Extra наконечник в следующий раз: попытаться найти эту информацию самостоятельно в the core library documentation. Вы знаете, что у вас есть какой-то объект, просто начните читать документацию, и вы найдете какой-то метод, который удовлетворит ваши потребности. Информацию о методах, которые вы можете выполнить на объекте, можно найти here.
Если вы хотите проверить для экземпляра определенного класса, я бы что-то вроде:
@list.is_a?(List)
Как Эдвин сказал, object.class
даст вам соответствующий объект класса. Если вам просто нужно имя класса, используйте object.class.name
.
это не совсем правильно, так как is_a? возвращает true для всех классов предков, поэтому '@ list.is_a? (Object)' также возвращает true – Eimantas
Что не так с этим? Если у вас есть список, он возвращает true. Если у вас есть подкласс List, он также возвращает true. Кажется правильным в любом случае. –