¿Todo en rubí es un objeto? ¿Esto incluye Fixnum
s?¿Es todo un objeto en ruby?
Respuesta
Depende de lo que quiere decir con "todo". Fixnum
s, como los otros lo han demostrado. Las clases también son, como instancias de la clase Class
. Los métodos, operadores y bloques no son, pero pueden ser envueltos por objetos (Proc
). La asignación simple no es, y no puede. Las declaraciones como while
tampoco son ni pueden. Los comentarios obviamente también caen en el último grupo.
La mayoría de las cosas que en realidad materia, es decir, que desea manipular, son objetos (o pueden envolverse en objetos).
+1 Me encantan estos contraejemplos. Decir que todo es un objeto sin considerar TODO, es un poco lavado de cerebro :) – Jakob
+1 - Magnífico eso es lo que estaba tratando de decir en alguna otra pregunta, a partir de la cual se ha generado esta pregunta. – RubyDubee
¿Por qué no es 'while' un objeto? – Ziggy
Yes everything is an object in ruby, y que incluye Fixnum
Sip.
> Fixnum.is_a?(Object) #=> true
Para ver la cadena de herencia:
> pp Fixnum.ancestors
[Fixnum,
Integer,
Precision,
Numeric,
Comparable,
Object,
...
Kernel]
=> nil
Sí. Fixnum
es una clase que hereda de Integer
, que hereda de Numeric
, que finalmente hereda de Object
.
O, ¿por qué no lo preguntas? :)
1.is_a? Object # => true
1.class # => Fixnum
Fixnum.is_a? Object # => true
Lectura de la Ruby info y documentation en el sitio web es una buena idea también.
Ruby no tiene ninguna primitiva (como int, char, etc. en java), por lo que cada valor (cualquier cosa que pueda sentarse a la derecha de una declaración de asignación) es un objeto. Sin embargo, las instrucciones de control, los métodos y otras características de la sintaxis del lenguaje no lo son.
Prácticamente todo en Ruby es un objeto, con la excepción de las estructuras de control. Independientemente de si un método, bloque de código u operador es o no es un Objeto, se representan como Objetos y pueden considerarse como tales.
Tomar un bloque de código, por ejemplo:
def what_is(&block)
puts block.class
puts block.is_a? Object
end
> what_is {}
Proc
true
=> nil
O para un Método:
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..."
Y los operadores (como +, -, [], < <) se implementan como métodos:
class String
def +
"I'm just a method!"
end
end
Para las personas que ingresan a la programación por primera vez, lo que esto significa en ap El sentido racional es que todas las reglas que puede aplicar a un tipo de objeto se pueden extender a otros. Puede pensar en una cadena, matriz, clase, archivo o cualquier clase que defina como comportándose de la misma manera. Esta es una de las razones por las que Ruby es más fácil de aprender y trabajar que algunos otros idiomas.
- 1. ¿Es todo un objeto en Python como el rubí?
- 2. ¿Cómo comprobar si un objeto es iterable en Ruby?
- 3. cómo proteger rb_todo todo en ruby
- 4. ¿Es posible cambiar los encabezados en un objeto S3 sin descargar todo el objeto?
- 5. ¿Cuál es el objeto "undef" de Ruby?
- 6. obtener métodos de un objeto en Ruby
- 7. Compruebe si el objeto Ruby es un booleano
- 8. ¿Es posible cambiar la clase de un objeto Ruby?
- 9. Todo es una expresión
- 10. ¿Cómo leer todo el archivo en Ruby?
- 11. Javascript: obtenga todo el objeto donde id es log_XXXX
- 12. ¿Es .NET "todo COM debajo"?
- 13. Control de versiones de un objeto Ruby
- 14. Convirtiendo un objeto a un hash de valores en Ruby
- 15. Cómo convertir un objeto Ruby a JSON
- 16. agregando atributos a un objeto Ruby dinámicamente
- 17. ¿Es HttpContextWrapper todo eso ... útil?
- 18. ¿Qué es "principal" en Ruby?
- 19. ¿Cuál es la forma más eficiente de copiar en profundidad un objeto en Ruby?
- 20. ¿Cómo comprobar si un objeto es nulo en una vista en Ruby?
- 21. ¿Cómo imprimir todo el tipo base de un objeto?
- 22. Todo es final
- 23. ¿Es nulo un objeto?
- 24. Anular id en un objeto ruby (creado con OpenStruct)
- 25. ¿Qué es un trabajador en ruby / rails?
- 26. ¿Cómo enumerar todos los métodos para un objeto en Ruby?
- 27. DDD: ¿Debería encajar todo en Entidad u Objeto de valor?
- 28. ¿Cómo puedo verificar si un objeto es nulo en ruby on rails 2?
- 29. ¿Cuál es la ventaja de crear un objeto enumerable usando to_enum en Ruby?
- 30. ¿Cuál es la mejor manera de burlarse de un objeto de terceros en ruby?
No creo que los métodos en ruby puedan tratarse como objetos. –