2012-06-27 6 views
5

Eventuali duplicati:
Ruby syntax question: Rational(a, b) and Rational.new!(a, b)Perché il nuovo metodo non necessari per la creazione di razionale in Ruby

Sono in procinto di leggere il libro rosso rubino zappa, e sono confuso circa la sintassi della creazione di numeri razionali.

Rational(3,4) * Rational(1,2) 

produce

=> 3/8 

Perché il metodo new non necessario per Rational (Ho anche notato per esempio posso creare una stringa senza il nuovo metodo)?

+1

Perché è un metodo. –

+1

Ah sì, non ho visto quel duplicato. Hai ragione. –

risposta

6

Per prima cosa, Ruby non ha una parola chiave new. new è un metodo di classe che tutte le classi hanno (lo ereditano da Class) che crea un oggetto di quella classe. Quando vedi qualcosa come Rational(3,4), Rational è in realtà solo un metodo privato di Object (definito in Kernel) che semplifica la creazione di numeri razionali. Per ulteriori informazioni su questi metodi di costruzione, vedi questa mia risposta: https://stackoverflow.com/a/9677125/1008938

+0

Grazie si, scusa intendevo il nuovo metodo. –

+0

@JeffStorey: Oh. Ma il resto della risposta è ancora valido. E dai un'occhiata a quel link. – Linuxios

+0

Sì, ora vedo, grazie. –

3

È un metodo che ha lo stesso nome della classe. È un comune conversion idiom in Ruby.

+1

Grazie. È bello cogliere questi comuni idiomi ruby ​​mentre sto imparando piuttosto che imparare la sintassi. –

Problemi correlati