Ruby 什么';pop和unshift方法背后的逻辑或最佳实践是什么?
我可以使用Ruby 什么';pop和unshift方法背后的逻辑或最佳实践是什么?,ruby,arrays,methods,Ruby,Arrays,Methods,我可以使用push将元素推入数组。如果我制作一个数组a=[“alice”,“bob”],a[0]=“alice”和a[1]=“bob”。我可以按一下“carl”,它位于a[2]。但是为什么我要弹出并返回它呢 shift方法对我来说很有意义,因为它删除了第一个索引元素,并将其余元素移动一个索引。我可以使用a.shift将“alice”移出数组,并返回“alice”,其效果是“bob”现在位于a[0]而不是a[1] unshift会将内容移回其原始索引,尽管引用都是模糊的预加,这样我就可以任意取消移
push
将元素推入数组。如果我制作一个数组a=[“alice”,“bob”]
,a[0]
=“alice”
和a[1]
=“bob”
。我可以按一下“carl”
,它位于a[2]
。但是为什么我要弹出并返回它呢
shift
方法对我来说很有意义,因为它删除了第一个索引元素,并将其余元素移动一个索引。我可以使用a.shift将“alice”
移出数组,并返回“alice”
,其效果是“bob”
现在位于a[0]
而不是a[1]
unshift
会将内容移回其原始索引,尽管引用都是模糊的预加,这样我就可以任意取消移动从未移动过的内容
我可能希望一致地对数组进行操作,因此在数组的一侧添加新元素,然后从另一侧删除它们。例如,如果元素在某个进程中循环,则有必要处理并移动第一个元素,并将任何新元素推送到队列的末尾
将元素预先添加到数组(并更改每个元素的索引)或在另一端弹出最近添加的元素有什么好处?或者在什么情况下有益?我们需要这些方法来实现两种不同的数据结构:堆栈和队列 排队就像超市里的排队。名单上第一名的人得到服务。新客户在最后等待 一堆文件就像你桌上的一堆文件。你可以在那堆纸上放更多的文件。如果你拿了那张纸,你会得到最近的一张。后进先出原则
我认为这就是为什么你不能像“普通”语言那样学习计算机语言的原因。因为您需要了解其背后的概念:常见数据结构、著名算法、复杂类……我们需要这些方法来实现两种不同的数据结构:堆栈和队列
But why would I want to pop it out and return it?
排队就像超市里的排队。名单上第一名的人得到服务。新客户在最后等待
一堆文件就像你桌上的一堆文件。你可以在那堆纸上放更多的文件。如果你拿了那张纸,你会得到最近的一张。后进先出原则
我认为这就是为什么你不能像“普通”语言那样学习计算机语言的原因。因为您需要了解其背后的概念:通用数据结构、著名算法、复杂类
But why would I want to pop it out and return it?
下面是一个使用pop()可以执行的操作示例:
当你学习一门编程语言时,你就是在学习技巧。您可能无法想象一个技巧是如何有用的,但随着您获得更多的经验,您将考虑一个编程问题,希望您知道的相关技巧会浮现在脑海中
另外,您应该知道pop()和shift()有不同的结果。将一个元素从数组的前面移走()效率要低得多,因为所有其他元素都必须移过去。如果阵列中有1000万个元素呢?然后pop()将一个元素从末尾移除是很容易的,但是将一个元素从前面移除在效率方面是灾难性的。Ruby从编程语言Perl中借用了很多东西,它创建数组的方式使得pop()和shift()同样有效,但我不相信Ruby采用了类似的策略
下面是一个使用pop()可以执行的操作示例:
当你学习一门编程语言时,你就是在学习技巧。您可能无法想象一个技巧是如何有用的,但随着您获得更多的经验,您将考虑一个编程问题,希望您知道的相关技巧会浮现在脑海中
另外,您应该知道pop()和shift()有不同的结果。将一个元素从数组的前面移走()效率要低得多,因为所有其他元素都必须移过去。如果阵列中有1000万个元素呢?然后pop()将一个元素从末尾移除是很容易的,但是将一个元素从前面移除在效率方面是灾难性的。Ruby从编程语言Perl中借用了很多东西,它创建数组的方式使pop()和shift()同样有效,但是我不相信ruby采用了类似的策略。除了pop/push的速度更快这一事实之外,实际上取决于您是想在开头还是结尾添加元素,而不是pop/push的速度更快这一事实,实际上取决于您是想在开头还是结尾添加元素。这正是我需要给我的学习提供更多指导的地方。谢谢。这正是我需要给我的研究更多的方向。