2012-01-06 27 views

Trả lời

90

last có một đối số:

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] 
@numbers.last(2) # => [7,8] 

Nếu bạn muốn loại bỏ hai mục cuối cùng:

@numbers.pop(2) #=> [7, 8] 
p @numbers #=> [1, 2, 3, 4, 5, 6] 
+0

+1, đây là điều mà tôi luôn quên hoàn toàn vì lý do nào đó, mặc dù nó đọc rất thân thiện hơn so với phiên bản chỉ số ... –

+2

Con người, sạch sẽ. Cảm ơn, Ruby. –

+2

Tôi yêu Ruby rất nhiều. – danielricecodes

13

Mảng được định nghĩa sử dụng [] không {}. Bạn có thể sử dụng chỉ số tiêu cực và dao để làm những gì bạn muốn:

>> @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] 
+2

Không nên ed, phạm vi đó bắt đầu với giới hạn phủ định ** FAIL **, nếu mảng chứa ít hơn số lượng mục nhất định, vì vậy: '@numbers [-9 ..- 1] # => nil', thay vì trả lại giá trị hiện tại 8 yếu tố. 'last' là hành vi tốt hơn nhiều trong lĩnh vực này. '@ numbers.last (9)' sẽ trả về mảng phần tử 8. – nightingale

1

Thử này

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] 
length = @numbers.length 
@numbers[length - 2..length - 1] => [7, 8] 
Các vấn đề liên quan