我正在在线学习 Ruby the Hard Way;我刚刚完成了第 26 个练习,这是一个“测试”,您可以借此修复某人的损坏代码。
我的问题来自使用带有 pop 方法的参数。我熟悉基础知识,但正确的答案意味着将参数从“-1”更改为“1”,我不确定它到底意味着什么。
有问题的行是:
def puts_last_word(words)
word = words.pop(1)
puts word
end
我假设它会从数组中弹出第二个元素,但我想要确认或帮助,以合适的为准。
我正在在线学习 Ruby the Hard Way;我刚刚完成了第 26 个练习,这是一个“测试”,您可以借此修复某人的损坏代码。
我的问题来自使用带有 pop 方法的参数。我熟悉基础知识,但正确的答案意味着将参数从“-1”更改为“1”,我不确定它到底意味着什么。
有问题的行是:
def puts_last_word(words)
word = words.pop(1)
puts word
end
我假设它会从数组中弹出第二个元素,但我想要确认或帮助,以合适的为准。
最好的确认可以在 Array#pop 的文档中得到:http ://rubydoc.info/stdlib/core/1.9.3/Array:pop
据此,参数指定要删除多少个元素,从数组的后面数起。
pop()和之间的唯一区别pop(1)是前者将返回单个元素(已删除的元素),而后者将返回具有单个元素的数组(同样,已删除的元素)。
编辑:我想使用测试的原因-1是教你关于数组访问与 之间的区别#[],其中-1表示最后一个元素,以及类似的方法pop,期望数量,而不是位置,作为他们的论点。
该参数指定要弹出的项目数。如果你指定一个参数,它会返回一个数组,而不指定一个参数只返回元素:
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