Ruby基础:数组中的Pop方法

6

我正在网上学习《Ruby编程基础教程》; 我刚刚完成了第26个练习,这是一个“测试”,你需要修复别人的错误代码。

我的问题出在使用pop方法时的参数。虽然我熟悉基本知识,但正确答案要求将参数从“-1”更改为“1”,我不确定它确切的含义是什么。

涉及到的代码行是:

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

我猜它从数组中弹出第二个元素,但我想得到确认或帮助,取决于哪个更适合。


1
不要假设,使用 ri Array.pop - the Tin Man
2个回答

4
最好的确认方式在Array#pop文档中可以找到:http://rubydoc.info/stdlib/core/1.9.3/Array:pop 根据文档,参数指定从数组末尾开始要删除的元素数量。 pop()和pop(1)之间唯一的区别在于前者将返回单个元素(已删除的元素),而后者将返回包含单个元素(同样是已删除的元素)的数组。
编辑:我想测试使用-1的原因是为了教你有关使用#[]进行数组访问以表示最后一个元素的差异,而期望其参数为数量而不是位置的方法(如pop)。

非常好的回答,完全有道理。这是我第一次看到这样的东西,所以我很困惑。(还有链接到文档的感谢,希望现在我能够避免愚蠢的问题。) - helipacter

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 

谢谢你的帮助!非常感激! - helipacter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接