@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
Ruby/Rails - Lấy hai giá trị cuối cùng trong một mảng
@numbers.last
sẽ cho tôi 8
tôi cần phải lấy hai kỷ lục cuối cùng. Cho đến nay tôi đã cố gắng này, tuy nhiên nó ném một NoMethodError
:
@numbers.last - 1
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
Ruby/Rails - Lấy hai giá trị cuối cùng trong một mảng
@numbers.last
sẽ cho tôi 8
tôi cần phải lấy hai kỷ lục cuối cùng. Cho đến nay tôi đã cố gắng này, tuy nhiên nó ném một NoMethodError
:
@numbers.last - 1
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]
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]
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
Thử này
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
length = @numbers.length
@numbers[length - 2..length - 1] => [7, 8]
+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ố ... –
Con người, sạch sẽ. Cảm ơn, Ruby. –
Tôi yêu Ruby rất nhiều. – danielricecodes