Domanda

sto imparando di Ruby nel mio tempo libero, e ho una domanda circa costrutti linguistici per le costanti. Ha Rubino ha un equivalente del C ++ parola chiave const per mantenere le variabili di essere modificato? Ecco qualche esempio di codice:

first_line   = f.gets().chomp()
column_count = first_line.split( %r{\s+} ).size()
print column_count, "\n"

Mi piacerebbe dichiarare COLUMN_COUNT essere const, perché lo uso qui di seguito nel mio programma e io non voglio modificare per errore. Ha Rubino fornire un costrutto del linguaggio per fare questo, o devo solo succhiare in su e rendersi conto che le mie variabili sono sempre mutevoli?

Risposta ai commenti:

'La causa più probabile di sovrascrittura 'accidentale' di variabili è, direi, lunghi blocchi di codice.' Sono d'accordo con lo spirito del punto, ma non sono d'accordo con la lettera. Il punto di evitare lunghi blocchi di codice e lo stato inutile è buona, ma per le costanti può anche essere utile per descrivere la progettazione di codice all'interno di attuazione. Una gran parte del valore della const nel mio codice viene da annotare quali variabili devo cambiare e che non dovrebbe, in modo che io non sono tentato di cambiare loro se torno al mio codice del prossimo anno. Questo è lo stesso sentimento che suggerisce che il codice che utilizza brevi commenti a causa di buoni nomi di variabili e il rientro chiaro è meglio che il codice scritto goffamente spiegato da commenti dettagliati.

Un'altra opzione sembra essere il metodo #freeze di Ruby, che mi piace il look di pure. Grazie per le risposte a tutti.

È stato utile?

Soluzione

Le variabili che iniziano con la lettera maiuscola sono costanti in Ruby. Così si potrebbe modificare il codice a questo:

first_line   = f.gets().chomp()
Column_count = first_line.split( %r{\s+} ).size()
print Column_count, "\n"

Ora si otterrà un avviso se si tenta di modificare Column_count.

Altri suggerimenti

di Ruby variabili in generale sono, beh, variabile.

Al di là di risposta di Jeremy, mentre del tutto esatto, non si portano a uno stile di Ruby che è molto "mainstream" o idiomaticamente suono e io non lo consiglio per l'adozione. Ruby non funziona come C ++ e generalmente non è molto appropriato per le cose che C ++ è meglio utilizzato per. Sistemi operativi, word processor, che genere di cose.

La causa più probabile di sovrascrittura "accidentale" di variabili è, direi, lunghi blocchi di codice. Dopo tutto, se si modifica il valore di una variabile in un metodo di cinque righe, che sta per essere abbastanza evidente! Se stai scrivendo abitualmente blocchi di codice più rispetto, ad esempio, 10 linee, allora quei pezzi probabilmente stanno facendo troppe cose e vi consiglio caldamente di fare sforzi per rompere in su (aumento la coesione ). Localizzare variabili per quanto possibile per ridurre al minimo il rischio di effetti collaterali imprevisti (ridurre accoppiamento ).

Per convenzione, le costanti in rubino sono generalmente scritti in tutte le protezioni, come COLUMN_COUNT. Ma, come è stato fatto notare, tutte le variabili che iniziano con la lettera maiuscola sono costanti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top