【发布时间】:2017-05-29 20:21:11
【问题描述】:
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
@numbers.last 会给我 8 个
我需要获取最后两条记录。到目前为止,我已经尝试过了,但是它抛出了 NoMethodError:
@numbers.last - 1
【问题讨论】:
标签: ruby-on-rails ruby
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
@numbers.last 会给我 8 个
我需要获取最后两条记录。到目前为止,我已经尝试过了,但是它抛出了 NoMethodError:
@numbers.last - 1
【问题讨论】:
标签: ruby-on-rails ruby
last 接受一个参数:
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
@numbers.last(2) # => [7,8]
如果要删除最后两项:
@numbers.pop(2) #=> [7, 8]
p @numbers #=> [1, 2, 3, 4, 5, 6]
【讨论】:
数组是使用[] 而不是{} 定义的。你可以使用负索引和范围来做你想做的事:
>> @numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] #=> [1, 2, 3, 4, 5, 6, 7, 8]
>> @numbers.last #=> 8
>> @numbers[-2..-1] #=> [7, 8]
【讨论】:
@numbers[-9..-1] #=> nil,而不是返回现有的8个元素。 last 在这方面表现得更好。 @numbers.last(9) 将返回 8 元素数组。