我正在通过在线学习Ruby Hard the Way方式;我刚刚完成了第26次练习,这是一次“测试”,你修复了某人破坏的代码。
我的问题来自于使用pop方法的参数。我对基础知识很熟悉,但正确的答案意味着将参数从“-1”改为“1”,而我完全不确定它的含义。
有问题的一行是:
def puts_last_word(words)
word = words.pop(1)
puts word
end
我认为它弹出数组中的第二个元素,但我想要确认或帮助,以适当的为准。
非常感谢您的阅读!
答案 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