String-klassen i Ruby fungerer ikke slik som Java sin String type, hvor man ikke kan endre et streng-objekt.
1| # String objekter kan endres: 2| navn = "Ola Nordmann" 3| 4| # Kjønnsoperasjon? 5| nyttnavn = navn.sub("Ola", "Oline") 6| 7| # sub lager ett nytt String objekt. 8| puts nyttnavn #=> "Oline Nordmann" 9| puts navn #=> "Ola Nordmann" 10| 11| # sub! (sub-bang) endrer selve streng objektet 12| nyttnavn = navn.sub!("Ola", "Oline") 13| puts nyttnavn #=> "Oline Nordmann" 14| puts navn #=> "Oline Nordmann" |
Legg merke til at sub generer et helt nytt String objekt, mens sub! endrer det faktiske objektet.
Metoder som slutter med utropstegn kalles "bang" eller "destruktive" metoder, da de som oftest endrer objektet.
Ruby bruker denne konvensjonen for navngivelse på mange metoder.