首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组的pop方法为什么没有感叹号?

数组的pop方法为什么没有感叹号?
EN

Stack Overflow用户
提问于 2012-06-19 19:57:48
回答 3查看 341关注 0票数 5

我以为按照惯例,只有带有感叹号的方法才能改变物体。

代码语言:javascript
复制
> array = [1, 2, 3]
 => [1, 2, 3] 
> array.pop
 => 3 
> array
 => [1, 2] 

为什么Array**'s** pop pop!**?**方法不是方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-19 20:10:12

这并不完全正确。

来自红宝石风格指南

潜在“危险”方法的名称(即修改自我或参数的方法,退出!)(不像exit那样运行终结器),等等。如果存在安全版本的危险方法__,则应以感叹号结尾。

pop方法的名称准确地说明了它所做的事情,因此没有必要用感叹号对其进行签名。

票数 11
EN

Stack Overflow用户

发布于 2012-06-19 20:37:40

“第二个惯例是,任何以感叹号结尾的方法都应该谨慎使用。(.)通常,以感叹号结尾的方法都是变异器,它会改变对象的内部状态。但情况并不总是这样;有许多变异器不以感叹号结尾,也有许多非变异符没有变化。变异方法(例如Array.fill)通常没有感叹号(Sic)。”

( Ruby编程语言,Flanagan &Matsumoto,第180页)

本书接着介绍了exitexit! (两者都不变异;exit!跳过所有at_exit钩子)的例子。

票数 2
EN

Stack Overflow用户

发布于 2012-06-19 20:00:46

这个约定仍然有效,但是pop是所有堆栈实现中的一个众所周知的方法,如果您从堆栈中删除了一些东西,那么您将有效地删除它。

这只是数据结构中的常识,红宝石人只是错过了在其中添加!标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11108432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档