2011-10-13 4 views
18

Kể từ phiên bản Ruby 1.9, băm giữ lại thứ tự chèn rất tuyệt. Tôi muốn biết cách tốt nhất để truy cập cặp khóa-giá trị cuối cùng.Truy cập cặp khóa-giá trị cuối cùng bằng mã băm Ruby (1.9)

Tôi đã viết một số mã mà thực hiện điều này:

hash.values.last 

này hoạt động và rất dễ hiểu, nhưng có lẽ nó có thể truy cập giá trị cuối cùng trực tiếp, thay vì đó thông qua một trung gian (các mảng giá trị). Là nó?

Trả lời

10

Không có gì được tích hợp sẵn, không. Nhưng bạn có thể một con khỉ-vá nếu bạn đã nghiêng như vậy (không thường khuyến cáo, tất nhiên):

class Hash 
    def last_value 
    values.last 
    end 
end 

Và sau đó:

hash.last_value 
16

Hash có một "đầu tiên" phương pháp, nhưng điều đó trả lại cặp đầu tiên trong chế độ mảng, cho qua, bạn có thể thử:

my_hash.to_a.last 

trở lại này cặp cuối cùng trong chế độ mảng như "phương pháp đầu tiên"

2

Tôi chỉ làm điều này cho một hash rất lớn:

hash.reverse_each.with_index do |(_, value), index| 
    break value if (index == 0) 
end 
14

Thêm một lựa chọn mà tôi đang sử dụng bản thân mình:

hash[hash.keys.last] 
+1

Đây là một giải pháp tuyệt vời! –