sintax rails form escape ruby ruby-1.9

rails - ¿Cuál es la diferencia entre Object y BasicObject en Ruby?



haml to html (1)

¿Cuál es la diferencia entre estas clases? ¿Cuál es la diferencia entre sus propósitos?


BasicObject se introdujo en Ruby 1.9 y es un elemento principal de Object (por lo tanto, BasicObject es la clase principal de todas las clases en Ruby).

BasicObject casi no tiene métodos en sí mismo:

::new #! #!= #== #__id__ #__send__ #equal? #instance_eval #instance_exec

BasicObject se puede usar para crear jerarquías de objetos independientes de la jerarquía de objetos de Ruby, objetos proxy como la clase Delegator u otros usos donde se debe evitar la contaminación del espacio de nombres de los métodos y clases de Ruby.

BasicObject no incluye Kernel (para métodos como puts) y BasicObject está fuera del espacio de nombres de la biblioteca estándar, por lo que las clases comunes no se encontrarán sin utilizar una ruta de clase completa.

Las combinaciones de objetos en el módulo Kernel hacen que las funciones incorporadas del kernel sean accesibles globalmente. Aunque los métodos de instancia de Object están definidos por el módulo Kernel ...

Puede usar BasicObject como padre de su objeto en caso de que no necesite métodos de Object y los definiría de otra manera:

# when you inherit Object class Tracer instance_methods.each do |m| next if [:__id__, :__send__].include? m undef_method m end # some logic end # when you inherit BasicObject class Tracer < BasicObject # some logic end