Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 什么';pop和unshift方法背后的逻辑或最佳实践是什么?_Ruby_Arrays_Methods - Fatal编程技术网

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的速度更快这一事实,实际上取决于您是想在开头还是结尾添加元素。这正是我需要给我的学习提供更多指导的地方。谢谢。这正是我需要给我的研究更多的方向。