2009-04-02 8 views

答えて

31

最後に感嘆符が付いているメソッドは、しばしばbang-methodと呼ばれます。 bangメソッドは必ずしも受信者を変更するとは限らず、感嘆符が付いていないメソッドには保証がありません。

this blog postで詳しく説明しています。投稿を引​​用するには:

The! !で終わるメソッド名に! は、「このメソッドは危険です。」つまり、 「危険な」バージョンの と同等のメソッドです。同じ名前の をマイナスしたものです。 「危険」は相対的なものです。 ! のメソッド名が に似ていますが、バングレスメソッド名に対応していないと、まったく意味がありません。

! 「この方法は が受信機を変更する」という意味ではありません。多くの 「危険な」方法では、受信者の が変更されます。しかし、そうでない人もいます。私は繰り返す:! は、メソッドが 受信者を変更することを意味しません。

11

non-bangのdowncase()メソッドは、単に文字列の縮小を表す新しいオブジェクトを返します。

バングバージョンでは、文字列自体が変更されます。

my_text = "MY TEXT" 
my_new_text = my_text.downcase 
puts my_new_text # will print out "my text" 
puts my_text  # will print out "MY TEXT" - the non-bang method doesn't touch it 

my_text.downcase! 

puts my_text # will print out "my text". The bang version has modified the object you're calling the method on 
関連する問題