3
为什么Ruby的Fixnum
类中的power!
方法用感叹号命名?按照惯例,名称以!结尾的方法有潜在危险(例如,他们可能会以某种方式修改实例)。Fixnum的力量!方法潜在危险?
我可以欣赏gsub
和gsub!
在String
之间的区别,但是怎么回事power!
?它似乎没有修改Fixnum
实例或执行任何其他“危险”操作;它只是返回结果。
为什么Ruby的Fixnum
类中的power!
方法用感叹号命名?按照惯例,名称以!结尾的方法有潜在危险(例如,他们可能会以某种方式修改实例)。Fixnum的力量!方法潜在危险?
我可以欣赏gsub
和gsub!
在String
之间的区别,但是怎么回事power!
?它似乎没有修改Fixnum
实例或执行任何其他“危险”操作;它只是返回结果。
这只是API的不一致。没有什么可担心的,沿着:)
!
是just a convention为破坏性的方法,而不是一个规则。
Bang方法意味着危险,不一定需要修改。请参阅http://stackoverflow.com/questions/709229/difference-between-downcase-and-downcase-in-ruby(我将在解决此问题后删除downvote) – 2009-12-29 11:21:35
Ruby网站(ruby-lang.org)链接到一个教程,具体说明爆炸方法修改接收器:http://rubylearning.com/satishtalim/writing_own_ruby_methods.html。 “在原地修改对象并以感叹号结尾的Ruby方法被称为爆炸方法。”所以......谁是对的? – Jeff 2009-12-29 19:08:37
哎。然而,它后来说:“通常对于内置类,通常危险(虽然不总是)意味着这种方法不同于其非爆炸等价物,永久修改它的接收器。”如果你对这个问题提供了一个空白的编辑(我不能撤销我的downvote,否则我会扭转我的downvote) – 2009-12-30 05:25:02