Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
Herencia de constructores en Ruby

Digamos que creo una nueva clase que hereda de Symbol. Los símbolos son únicos y está muy claro que la clase Símbolo no tiene Constructor. Pero, ¿qué mecanismo impide la creación de un constructor en la clase secundaria? ¿Existe alguna bandera que haga únicos a todos los niños?

 class Syb < Symbol def initialize end end p Syb.respond_to? :new false
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

En primer lugar, también creo que no es una buena idea extender las clases básicas de Ruby, las referencias

En este caso en particular

"Para mayor eficiencia, muchos métodos de clase central están codificados en C en lugar de Ruby. Y en algunos casos, como este operador de suma de Array, se implementan de tal manera que la clase del valor de retorno está codificada".

Si observa el método de inicialización en la clase Ruby Symbol (realmente tiene):

 [36] pry(main)> require 'pry-doc' => true [72] pry(main)> cd Symbol [73] pry(Symbol):1> $ initialize From: object.c (C Method): Owner: BasicObject Visibility: private Signature: initialize() Number of lines: 5 static VALUE rb_obj_dummy0(VALUE _) { return rb_obj_dummy(); }

Entonces podemos ver que este método ya existe y está implementado en c, pero existe una limitación sobre la anulación de los métodos de las clases principales de ruby, explicado en esta respuesta

Y también creo que es muy importante investigar con ruby, pry pry-doc y pry-gem

over 4 years ago · Santiago Trujillo Report

0

Como dijo Sergio, mi error fue la confusión de constructor e inicializador. En realidad, es posible escribir un nuevo constructor para la clase Símbolo.

 irb(main):001:1* class Symbol irb(main):002:2* def Symbol.new x irb(main):003:2* x.to_sym irb(main):004:1* end irb(main):005:0> end => :new irb(main):008:0> a = Symbol.new "xyz" => :xyz irb(main):009:0> a => :xyz

Sí, me doy cuenta de que aquí el símbolo en realidad se crea mediante el método .to_sym . Entonces, new no es realmente un constructor, sino más bien un envoltorio para el constructor real.

over 4 years ago · Santiago Trujillo Report

0

Digamos que creo una nueva clase que hereda de Symbol. Los símbolos son únicos y está muy claro que la clase Símbolo no tiene Constructor.

Esta declaración es trivialmente cierta, ya que Ruby no tiene constructores.

Pero, ¿qué mecanismo impide la creación de un constructor en la clase secundaria?

El hecho de que Ruby no tenga constructores impide la creación de un constructor.

¿Existe alguna bandera que haga únicos a todos los niños?

No.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!