In generale, i metodi che terminano con !
indicano che il metodo modificherà l'oggetto chiamato . Ruby li chiama come "metodi pericolosi" perché cambiano lo stato a cui potrebbe fare riferimento un altro utente. Ecco un semplice esempio per le stringhe:
foo = "A STRING" # a string called foo
foo.downcase! # modifies foo itself
puts foo # prints modified foo
Questo stamperà:
a string
Nelle librerie standard, ci sono un sacco di posti vedrete coppie di metodi di nome simile, quello con la !
e uno senza. Quelli senza sono chiamati "metodi sicuri" e restituiscono una copia dell'originale con le modifiche applicate a la copia, con il numero di telefono invariato. Ecco lo stesso esempio senza la !
:
foo = "A STRING" # a string called foo
bar = foo.downcase # doesn't modify foo; returns a modified string
puts foo # prints unchanged foo
puts bar # prints newly created bar
Questo uscite:
A STRING
a string
tenere a mente questo è solo una convenzione, ma un sacco di classi di Ruby seguirla. Ti aiuta anche a tenere traccia di ciò che viene modificato nel tuo codice.
sinonimo: bang, punto esclamativo – prusswan
La risposta accettata deve essere modificato in http://stackoverflow.com/a/612653/109618. Vedi http://www.wobblini.net/bang.txt e http://www.ruby-forum.com/topic/176830#773946 - "Il segno del botto significa" la versione bang è più pericolosa del suo non controparte bang; maneggia con cura "" -Matz –
Il metodo bang sarebbe un'ottima scelta di design se ** solo ** e ** tutti ** i metodi bang fossero pericolosi. Purtroppo non lo sono, e quindi diventa un esercizio frustrante nel memorizzare ciò che è e non è mutabile. –