2009-12-26 74 views
3

为什么Ruby的Fixnum类中的power!方法用感叹号命名?按照惯例,名称以!结尾的方法有潜在危险(例如,他们可能会以某种方式修改实例)。Fixnum的力量!方法潜在危险?

我可以欣赏gsubgsub!String之间的区别,但是怎么回事power!?它似乎没有修改Fixnum实例或执行任何其他“危险”操作;它只是返回结果。

+0

Bang方法意味着危险,不一定需要修改。请参阅http://stackoverflow.com/questions/709229/difference-between-downcase-and-downcase-in-ruby(我将在解决此问题后删除downvote) – 2009-12-29 11:21:35

+0

Ruby网站(ruby-lang.org)链接到一个教程,具体说明爆炸方法修改接收器:http://rubylearning.com/satishtalim/writing_own_ruby_methods.html。 “在原地修改对象并以感叹号结尾的Ruby方法被称为爆炸方法。”所以......谁是对的? – Jeff 2009-12-29 19:08:37

+0

哎。然而,它后来说:“通常对于内置类,通常危险(虽然不总是)意味着这种方法不同于其非爆炸等价物,永久修改它的接收器。”如果你对这个问题提供了一个空白的编辑(我不能撤销我的downvote,否则我会扭转我的downvote) – 2009-12-30 05:25:02

回答

2

这只是API的不一致。没有什么可担心的,沿着:)

!just a convention为破坏性的方法,而不是一个规则。

相关问题