Действительно ли все - объект в рубине?

Все находится в рубине объектом? Делает это включает Fixnums?

13
задан Andrew Grimm 7 August 2010 в 07:25
поделиться

5 ответов

Зависит от того, что вы подразумеваете под «всем». Fixnum , как показали другие. Классы также являются экземплярами класса Class . Методы, операторы и блоки - нет, но могут быть обернуты объектами ( Proc ). Простого задания нет и не может. Такие утверждения, как , в то время как , также не являются и не могут. Комментарии, очевидно, также попадают в последнюю группу.

Большинство вещей, которые на самом деле имеют значение , т.е. которыми вы хотели бы манипулировать, являются объектами (или могут быть заключены в объекты).

38
ответ дан 1 December 2019 в 17:39
поделиться
1
ответ дан 1 December 2019 в 17:39
поделиться

Да. Fixnum - это класс, который наследуется от Integer , который наследуется от Numeric , который в конечном итоге наследуется от Object .

Или почему бы тебе просто не спросить об этом? :)

1.is_a? Object # => true
1.class # => Fixnum
Fixnum.is_a? Object # => true

Также неплохо было бы прочитать Ruby info и документацию на веб-сайте.

4
ответ дан 1 December 2019 в 17:39
поделиться

Ага.

> Fixnum.is_a?(Object)   #=> true

Чтобы увидеть цепочку наследования:

> pp Fixnum.ancestors
[Fixnum,
 Integer,
 Precision,
 Numeric,
 Comparable,
 Object,
  ...
 Kernel]
 => nil 
1
ответ дан 1 December 2019 в 17:39
поделиться

Ruby не имеет примитивов (таких как int, char и т. Д. В java), поэтому каждое значение (все, что может находиться справа от оператора присваивания) является объектом. Однако управляющие операторы, методы и другие особенности синтаксиса языка - нет.

2
ответ дан 1 December 2019 в 17:39
поделиться