为什么Array的pop方法没有感叹号?

ddl*_*ack 5 ruby

我认为按惯例,只有带感叹号的方法才会改变对象.

> array = [1, 2, 3]
 => [1, 2, 3] 
> array.pop
 => 3 
> array
 => [1, 2] 
Run Code Online (Sandbox Code Playgroud)

为什么不是Arraypop调用的方法pop!

meg*_*gas 11

这不太正确.

来自Ruby风格指南

潜在的"危险"方法的名称(即修改self或参数的方法,退出!(不会像退出那样运行终结器)等)如果存在危险安全版本,应以感叹号结尾方法.

而pop方法的名称恰好说明了它正在做什么,因此不需要用感叹号对其进行签名.