Ruby Basics:Array中的Pop方法

时间:2011-12-06 23:40:07

标签: ruby arrays pop learn-ruby-the-hard-way

我正在通过在线学习Ruby Hard the Way方式;我刚刚完成了第26次练习,这是一次“测试”,你修复了某人破坏的代码。

我的问题来自于使用pop方法的参数。我对基础知识很熟悉,但正确的答案意味着将参数从“-1”改为“1”,而我完全不确定它的含义。

有问题的一行是:

def puts_last_word(words)
    word = words.pop(1)
    puts word
end

我认为它弹出数组中的第二个元素,但我想要确认或帮助,以适当的为准。

非常感谢您的阅读!

2 个答案:

答案 0 :(得分:3)

可以在Array#pop:http://rubydoc.info/stdlib/core/1.9.3/Array:pop

的文档中获得最佳确认

根据该参数,该参数指定从数组后面开始计算的要删除的元素数量。

pop()pop(1)之间的唯一区别是前者将返回单个元素(已删除的元素),而后者将返回具有单个元素的数组(同样,已删除的元素) )。

修改:我认为使用-1测试的原因是为了教您使用#[]进行数组访问之间的区别,其中-1意味着最后一个元素,以及像pop这样的方法,它们期望一个数量,而不是一个位置,作为他们的论点。

答案 1 :(得分:2)

参数指定要弹出的项目数。如果指定参数,则返回一个数组,而不指定参数则只返回元素:

ruby-1.8.7-p352 :006 > a = [1,2,3]
=> [1, 2, 3] 
ruby-1.8.7-p352 :007 > a.pop(1)
=> [3] 
ruby-1.8.7-p352 :008 > a = [4,5,6]
=> [4, 5, 6] 
ruby-1.8.7-p352 :009 > a.pop(2)
=> [5, 6]
ruby-1.8.7-p352 :010 > a.pop
=> 4