a = Numeric.new # doesn't take an argument
No puedo imaginar un caso de uso para esto. ¿Puedes?¿Por qué Ruby tiene Numeric.new?
a = Numeric.new # doesn't take an argument
No puedo imaginar un caso de uso para esto. ¿Puedes?¿Por qué Ruby tiene Numeric.new?
La clase Class
define un método new
ejemplo. Y entonces el método de clase new
en Numeric
es solo un vestigio de eso, no hace nada, piensa en él como uno de esos órganos vestigiales que los animales heredan de un antepasado distante, como el apéndice sobre humanos.
Tenga en cuenta que las subclases de Numeric
como Fixnum
y Float
y sus parientes explicitamente undefine el método new
. Supongo que simplemente no se molestaron en definirlo como Numeric
ya que las instancias directas de esta clase nunca existieron realmente, y no hace daño mantenerlas.
Sí, así es como me enteré. jugó en IRB, probando Float.new ('NaN'), fallando (NoMethodError). Yendo por Numeric.new ("NaN '), terminando con un inútil (?) Numérico. – steenslag
Todo en Ruby es un objeto, incluso clases. ¡Así que no tener un constructor para Numeric
significaría que no hay una clase Numeric
en absoluto!
Eche un vistazo a the docs. Es simplemente una clase base. Nunca (bueno, sería muy poco probable, de todos modos :)) usarlo directamente.
Esto está mal. Muchas clases de Ruby no tienen el método 'new', vea: TrueClass, FalseClass, NilClass, Fixnum, Float, etc. – horseyguy
Eh, un detalle menor. Una clase puede definir su método 'nuevo' si lo desea. Numeric no funciona porque tienes que poder subclasificarlo y usarlo como base. 'TrueClass' y similares no están destinados a ser usados así. – rfunduk
ese 'detalle menor' hace que esta afirmación audaz tuya sea completamente inválida: "¡Así que no tener un constructor para Numérico significaría que no hay ninguna clase Numérica en absoluto!" – horseyguy
Nunca usará la clase numérica de esa manera. Es la clase base para todos los tipos numéricos en Ruby.
clases numéricas de Ruby forman un completo torre numérica, proporcionando muchos tipos de representaciones de números y representaciones numéricas .
Fuente: Ruby Tips: Numeric Classes
Pero no explicó por qué 'new' todavía existe :) – horseyguy
Quiere decir 'Numeric.new' no' NumeriC# new' .... the '#' significa 'instancia de método' (pero en este caso 'new' es un método de clase) – horseyguy
No lo sabía. Título corregido Gracias. – steenslag