6

我正在在线学习 Ruby the Hard Way;我刚刚完成了第 26 个练习,这是一个“测试”,您可以借此修复某人的损坏代码。

我的问题来自使用带有 pop 方法的参数。我熟悉基础知识,但正确的答案意味着将参数从“-1”更改为“1”,我不确定它到底意味着什么。

有问题的行是:

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

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

4

2 回答 2

4

最好的确认可以在 Array#pop 的文档中得到:http ://rubydoc.info/stdlib/core/1.9.3/Array:pop

据此,参数指定要删除多少个元素,从数组的后面数起。

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

编辑:我想使用测试的原因-1是教你关于数组访问与 之间的区别#[],其中-1表示最后一个元素,以及类似的方法pop,期望数量,而不是位置,作为他们的论点。

于 2011-12-06T23:44:09.537 回答
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 
于 2011-12-06T23:48:05.910 回答