a = Numeric.new # doesn't take an argument
Non riesco a immaginare un caso d'uso per questo. Puoi?Perché Ruby ha Numeric.new?
a = Numeric.new # doesn't take an argument
Non riesco a immaginare un caso d'uso per questo. Puoi?Perché Ruby ha Numeric.new?
La classe Class
definisce un metodo new
istanza. E così il metodo di classe new
su Numeric
è solo un residuo di ciò - non fa nulla - pensalo come uno di quegli organi rudimentali che gli animali ereditano da un antenato remoto - come l'appendice sugli umani.
noti che le sottoclassi di Numeric
come Fixnum
e Float
e loro parenti esplicitamente undefine metodo new
. Immagino che non si siano preoccupati di non definirlo per Numeric
poiché le istanze dirette di questa classe non esistono mai realmente, e non fa male tenerla in giro.
Sì, è così che l'ho scoperto. giocato in irb, cercando Float.new ('NaN'), fallendo (NoMethodError). Andando su Numeric.new ("NaN"), finendo con un inutile (?) Numerico. – steenslag
Tutto in Ruby è un oggetto, anche classi. Quindi, per non avere un costruttore per Numeric
significherebbe che non c'è nessuna classe Numeric
!
Dai uno sguardo allo the docs. È semplicemente una classe base. Non lo faresti mai (beh, sarebbe altamente improbabile, comunque :)) usarlo direttamente.
Questo è sbagliato. Molte classi di Ruby non hanno il metodo 'new', vedi: TrueClass, FalseClass, NilClass, Fixnum, Float, ecc. – horseyguy
Eh, un dettaglio minore. Una classe può indefinire il suo metodo 'nuovo' se lo desidera. Numerico non perché sei destinato a essere in grado di sottoclasse e usarlo come base te stesso. 'TrueClass' e simili non sono pensati per essere usati in questo modo. – rfunduk
questo 'dettaglio minore' rende completamente invalida questa tua affermazione in grassetto: "Quindi non avere un costruttore per Numeric significherebbe che non esiste alcuna classe numerica!" – horseyguy
Non userete mai una classe numerica in questo modo. È la classe base di tutti i tipi numerici in Ruby.
classi numerici di Ruby formano un full tower numerico, fornendo molti tipi di rappresentazioni di numeri e rappresentazioni numeriche.
Fonte: Ruby Tips: Numeric Classes
Ma non hai spiegato perché esiste ancora 'new' :) – horseyguy
Significa 'Numeric.new' not' NumeriC# new' .... il '#' significa 'metodo di istanza' (ma in questo caso 'new' è un metodo di classe) – horseyguy
Non lo so. Titolo corretto Grazie. – steenslag