Все ли в рубине объект? Включает ли это Fixnum
?Все ли объект в рубине?
ответ
Зависит от того, что вы подразумеваете под «всем». Fixnum
s, как показали другие. Классы также являются экземплярами класса Class
. Методы, операторы и блоки не являются, но могут быть обернуты объектами (Proc
). Простое назначение не является, и не может. Заявления вроде while
также не являются и не могут. Комментарии, очевидно, также попадают в последнюю группу.
Большинство вещей, которые на самом деле имеют значение, т. Е. Что вы хотели бы манипулировать, являются объектами (или могут быть обернуты в объекты).
Yes everything is an object in ruby, и что включает в себя Fixnum
Yup.
> Fixnum.is_a?(Object) #=> true
Чтобы увидеть цепочку наследования:
> pp Fixnum.ancestors
[Fixnum,
Integer,
Precision,
Numeric,
Comparable,
Object,
...
Kernel]
=> nil
Да. Fixnum
- это класс, который наследует от Integer
, который наследует от Numeric
, который, наконец, наследует от Object
.
Или, почему бы вам просто не спросить об этом? :)
1.is_a? Object # => true
1.class # => Fixnum
Fixnum.is_a? Object # => true
Чтение Ruby info и documentation на сайте является хорошей идеей тоже.
У Ruby doen't есть какие-либо примитивы (например, int, char и т. Д. В java), поэтому каждое значение (все, что может стоять справа от оператора присваивания) является объектом. Однако контрольные утверждения, методы и другие функции синтаксиса языка не являются.
Практически все в Ruby является объектом, за исключением структур управления. Независимо от того, являются ли методы, блок кода или оператором или нет объектом, они представлены как объекты и могут рассматриваться как таковые.
Возьмите блок кода, например:
def what_is(&block)
puts block.class
puts block.is_a? Object
end
> what_is {}
Proc
true
=> nil
Или для метода:
class A
def i_am_method
"Call me sometime..."
end
end
> m = A.new.method(:i_am_method)
> m.class
Method
> m.is_a? Object
true
> m.call
"Call me sometime..."
И операторы (например, +, -, [], < <) реализуются как методы:
class String
def +
"I'm just a method!"
end
end
Для людей, впервые вступивших в программирование, это означает, что в ap что все правила, которые вы можете применить к одному виду Объектов, могут быть распространены на других. Вы можете думать о String, Array, Class, File или любом классе, который вы определяете как поведение во многом таким же образом. Это одна из причин, по которой Ruby легче подобрать и работать с некоторыми другими языками.
- 1. Объект «главный» в Рубине
- 2. Instance объект суперкласса в Рубине
- 3. Можно ли включить модуль на объект в рубине?
- 4. Возврат выходного eventmachine объект в Рубине
- 5. Как построить этот объект JSON в рубине?
- 6. Как описать все целые числа в Рубине
- 7. В рубине, какой объект (x..y)? Перечислитель?
- 8. Является Там Все, как таймер в Рубине
- 9. Заменить все содержимое файла в рубине?
- 10. Все ли объект в python, как ruby?
- 11. Все ли объект в PL/SQL?
- 12. Нужно ли закрывать StringIO в рубине?
- 13. .? (существование) в рубине?
- 14. класс в рубине (объявление класса в рубине)
- 15. Нарезка массив в Рубине
- 16. Выбрасывает ли объект все свойства IDisposable?
- 17. Происходит ли заявление о рубине?
- 18. Как работает === в рубине?
- 19. Временные операции в рубине
- 20. Должны ли все классы Python расширять объект?
- 21. Как проверить, все ли объект/строка ссылается на другой объект?
- 22. ссылочный объект и сохранить его первоначальное значение в рубине
- 23. результаты запроса Доступ к XPath, когда все, что возвращаемый объект LibXML в Рубине
- 24. Необъектно-ориентированные аспекты в рубине
- 25. Есть ли способ, чтобы переопределить [] = + в рубине
- 26. Определить, существует ли кодировка в рубине
- 27. Можно ли переопределить 0 в рубине?
- 28. Можно ли переопределить переменную в рубине?
- 29. Есть ли «&& Равно» Оператор в Рубине
- 30. Есть ли функция radix в рубине?
Я не думаю, что методы в рубине можно рассматривать как объекты. –