Tôi muốn thay thế mỗi value
bằng một mã băm bằng value.some_method
.Làm cách nào để thay đổi giá trị Hash?
Ví dụ, đối được đưa ra một băm đơn giản:
{"a" => "b", "c" => "d"}`
mỗi giá trị nên .upcase
d, vì vậy nó trông giống như:
{"a" => "B", "c" => "D"}
tôi đã cố gắng #collect
và #map
nhưng luôn luôn chỉ nhận được mảng trở lại . Có một cách thanh lịch để làm điều này?
CẬP NHẬT
Chết tiệt, tôi quên: Các băm là trong một instance variable mà không nên thay đổi. Tôi cần một băm mới với các giá trị thay đổi, nhưng không muốn xác định biến đó một cách rõ ràng và sau đó vòng lặp trên băm làm đầy nó. Một cái gì đó như:
new_hash = hash.magic{ ... }
ví dụ thứ hai trong câu trả lời của tôi trả về một băm mới. bình luận về nó nếu bạn muốn tôi mở rộng sự kỳ diệu mà #inject đang làm. – kch