为什么不遵循Array#keep_if的Ruby约定?

时间:2015-10-31 08:32:22

标签: ruby

使用bang(<a ng-style="{'background-color': color}">Sample Text</a> )进行方法命名的Ruby约定。惯例是如果方法改变!,我们使用bang让其他人了解自我修改的行为。

例如self不会更改Array#select,但self会更改Array#select!。但Array#keep_if确实会改变自我。没有任何名为Array#keep_if!的内容。

不遵守惯例可能是什么原因?

2 个答案:

答案 0 :(得分:4)

Ruby的创建者Matz写道:

  爆炸(!)并不意味着“破坏性的”#34;也不缺乏意味着非   破坏性的。爆炸标志意味着爆炸版本更多   比非爆炸对手更危险;谨慎处理&#34;。以来   Ruby有很多&#34;破坏性的&#34;方法,如果爆炸标志跟随你   意见,每个Ruby程序都会充满爆炸,因此很难看。

来源:Ruby Forum

答案 1 :(得分:0)

这是一种常见的误解。爆炸方法用于区分同一方法的危险版本和安全版本。这并不意味着它必然会改变它的接收器。