Genel olarak, sona eren yöntemler !
, yöntemin çağrıldığı nesneyi değiştireceğini gösterir . Ruby bunları " tehlikeli yöntemler " olarak adlandırır çünkü başkalarının referans alabileceği durumu değiştirirler. İşte dizeler için basit bir örnek:
foo = "A STRING" # a string called foo
foo.downcase! # modifies foo itself
puts foo # prints modified foo
Bu çıktı:
a string
Standart kütüphanelerde, biri !
ve diğeri olmadan benzer şekilde adlandırılmış yöntemlerin çiftlerini göreceğiniz birçok yer vardır . Olmayanlar "güvenli yöntemler" olarak adlandırılır ve orijinalin bir kopyasını, kopya değiştirilmeden kopyaya uygulanan değişikliklerle döndürürler . İşte aynı örnek olmadan !
:
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
Bu çıktılar:
A STRING
a string
Bunun sadece bir kongre olduğunu unutmayın, ancak birçok Ruby sınıfı bunu izler. Ayrıca, kodunuzda nelerin değiştiğini izlemenize de yardımcı olur.