versiones tipos software filosofia examples entrada datos caracteristicas ruby primitive

software - tipos de variables en ruby



¿Hay tipos primitivos en Ruby? (3)

Soy un desarrollador de Java que recién comienza a aprender Ruby. ¿Ruby tiene algún tipo primitivo? Parece que no puedo encontrar una lista de ellos. Si no, ¿por qué?


Cita de Acerca de Ruby

En Ruby, todo es un objeto. Cada bit de información y código puede tener sus propias propiedades y acciones.

En muchos idiomas, los números y otros tipos primitivos no son objetos. Ruby sigue la influencia del lenguaje Smalltalk al proporcionar métodos y variables de instancia a todos sus tipos. Esto facilita el uso de Ruby, ya que las reglas que se aplican a los objetos se aplican a todo Ruby.

Java elige preservar algunos tipos primitivos principalmente para el rendimiento, pero hay que admitir que no todos los tipos son una clase que hace que el código Java sea un poco incómodo a veces. La filosofía de Ruby es hacer que los días del programador sean más fáciles, creo que hacer de todo un objeto es una forma de lograrlo.


No hay tipos de datos primitivos en Ruby. Cada valor es un objeto, incluso los literales se convierten en objetos:

nil.class #=> NilClass true.class #=> TrueClass ''foo''.class #=> String 100.class #=> Integer 0x1a.class #=> Integer 0b11010.class #=> Integer 123.4.class #=> Float 1.234e2.class #=> Float

Esto le permite escribir código hermoso:

3.times do puts "Hello from Ruby" end


Un principio básico de Ruby es que todos los datos deben representarse como objetos. Otros lenguajes como Smalltalk siguen un paradigma similar.

El beneficio de este diseño es que hace que Ruby sea más elegante y más fácil de aprender. Las reglas que se aplican a los objetos se aplican consistentemente a todo Ruby.

Por ejemplo, cuando los principiantes están aprendiendo Java por primera vez, la diferencia entre el tipo primitivo int y la clase envoltura Integer puede ser confusa. Esta confusión se ve agravada por las conversiones implícitas a veces confusas entre los dos a través de autoboxing.

Entonces, ¿por qué los lenguajes como Java o C # se molestan con los tipos primitivos? La respuesta es el rendimiento. La creación de objetos incurre en gastos generales adicionales en comparación con los primitivos.