@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
的Ruby/Rails - 获取数组中的
@numbers.last
的最后两个值都会给我8
我要抓住最后的两个记录。到目前为止,我已经试过了,但它抛出一个NoMethodError
:
@numbers.last - 1
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
的Ruby/Rails - 获取数组中的
@numbers.last
的最后两个值都会给我8
我要抓住最后的两个记录。到目前为止,我已经试过了,但它抛出一个NoMethodError
:
@numbers.last - 1
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个元素。在这方面“最后一刻”的表现要好得多。 '@ numbers.last(9)'会返回8元素数组。 – nightingale 2016-06-05 06:31:27
尝试这
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
length = @numbers.length
@numbers[length - 2..length - 1] => [7, 8]
+1,这是我总是完全忘记,因为某些原因,虽然它读取比索引版友好多了... – 2012-01-06 08:40:42
男人,这是干净的。谢谢,Ruby。 – 2015-09-02 16:30:48
我非常喜欢Ruby。 – danielricecodes 2017-05-24 17:03:17