h.values
sẽ cung cấp cho bạn một mảng được yêu cầu.
> h.values
# ⇒ [
# [0] "val1",
# [1] "val2",
# [2] "val3"
# ]
UPD trong khi câu trả lời với h[h.keys[0]]
được đánh dấu là đúng, tôi là một chút tò mò với các tiêu chuẩn:
h = {:a => "val1", :b => "val2", :c => "val3"}
Benchmark.bm do |x|
x.report { 1_000_000.times { h[h.keys[0]] = 'ghgh'} }
x.report { 1_000_000.times { h.values[0] = 'ghgh'} }
end
#
# user system total real
# 0.920000 0.000000 0.920000 ( 0.922456)
# 0.820000 0.000000 0.820000 ( 0.824592)
Hình như chúng ta đang nhổ nước miếng lên 10% năng suất.
Cảnh giác với những sự khác biệt phiên bản Ruby khi sử dụng 'values': 1.8.x nào * không * có bất kỳ trật tự, trong khi phiên bản mới hơn Ruby có chèn đặt hàng . –
băm không theo thứ tự ngữ nghĩa; nếu bạn cần lập chỉ mục giống như mảng, có lẽ bạn muốn cấu trúc dữ liệu khác nhau hoặc một lớp hỗ trợ cả hai cơ chế. – Eevee
@Eevee Tuy nhiên, họ có một thứ tự được xác định rõ ràng trong phiên bản Ruby gần đây. Bây giờ, nếu điều này nên được dựa vào cho một thuật toán .. là một câu hỏi hoàn toàn. –