What does ! mean at the end of a Ruby method definition?
本问题已经有最佳答案,请猛点这里访问。
我试图通过阅读代码来学习Ruby,但我遇到了以下情况,在我的教程/练习表中都找不到。
1 2 3 4 5 | def foo! # do bar return bar end |
"!"的意思是什么?在方法定义中?
Ruby不将
例如,下面是
1 2 3 4 5 6 7 8 9 10 | 1.9.3p392 :004 > foo ="whatever" =>"whatever" 1.9.3p392 :005 > foo.upcase =>"WHATEVER" 1.9.3p392 :006 > foo =>"whatever" 1.9.3p392 :007 > foo.upcase! =>"WHATEVER" 1.9.3p392 :008 > foo =>"WHATEVER" |
ActiveRecord广泛使用Bang方法来处理诸如
这是一个"抬头!"旗子,但没有什么能强制执行。如果你想迷惑和/或吓唬人,你可以在
您可以定义一个
当没有对接收器进行任何更改时,Bang方法依次返回
不带
1 2 3 | str ="hello" p str.delete("l") #=>"heo" p str #=>"hello" |
使用
1 2 3 | str ="hello" p str.delete!("l") #=>"heo" p str #=>"heo" |
注:有一些非Bang版本的方法,也可以更改接收器对象:
1 2 3 | str ="hello" p str.concat(" world") #=>"hello world" p str #=>"hello world" |
1 2 3 4 5 6 7 8 9 10 | 1.9.3-p194 :004 > a="hello" =>"hello" 1.9.3-p194 :005 > a.strip =>"hello" 1.9.3-p194 :006 > a =>"hello" 1.9.3-p194 :007 > a.strip! =>"hello" 1.9.3-p194 :008 > a =>"hello" |