bonzo400: Methodennamen in Ruby (was: Link mit festen Index möglich?)

Beitrag lesen

<snip>

Bei Ruby etwa ist das anders, dort gibt es die Unterscheidung zwischen Methoden, die ein neues Objekt erzeugen und solchen, die das vorhandene ändern. Letztere enden auf »!«. Beispiel:

ruby-1.8.7-p302 :006 > s = "Hallo"
=> "Hallo"
ruby-1.8.7-p302 :007 > s.upcase
=> "HALLO"
ruby-1.8.7-p302 :008 > s
=> "Hallo"
ruby-1.8.7-p302 :009 > s.upcase!
=> "HALLO"
ruby-1.8.7-p302 :010 > s
=> "HALLO"

<snip>

Schon z.B. String#insert ist ein Gegenbeispiel für diese "Regel".

Das ! im Methodennamen heißt (oder wohl besser: sollte es ursprünglich) einfach nur,
dass diese Methode die 'gefährlichere' von Zweien (die Methode mit ! im Namen und die ohne) ist.

http://dablog.rubypal.com/2007/8/15/bang-methods-or-danger-will-rubyist

Conventions in ruby and the principle of least surprise