Nói rằng tôi có băm này:của Ruby giá trị lần lượt bên trong một băm vào các biến địa phương
entry = {"director"=>"Chris Nolan", "prducer"=>"Sum Duk", "writer"=>"Saad Bakk"}
tôi muốn trích xuất mỗi chìa khóa vào biến cục bộ riêng của mình với các giá trị liên quan đến:
director = "Chris Nolan"
producer = "Sum Duk"
...
Bằng cách sử dụng một vòng lặp và không:
director = entry["director"]
Vì có nhiều giá trị và tôi không muốn làm riêng chúng.
Tôi thấy điều này hoạt động gần như hoàn hảo ngoại trừ nó tạo ra biến mẫu và tôi muốn biến cục bộ, nhưng local_variable_set
không tồn tại vì một số lý do.
entry.each_pair { |k, v| instance_variable_set("@#{k}", v) }
Có giải pháp nào không? Hoặc thất bại đó, một cách để biến một biến thể hiện thành một biến cục bộ và xóa một cá thể mà không làm từng cái một?
Bất kỳ lý do họ không thể ở trong băm và được truy cập từ đó? Có lẽ, bạn đang sử dụng các biến cục bộ sau này - nó sẽ không dễ sử dụng các giá trị băm? – Pavling
Nếu bạn đang sử dụng Rails (hoặc chỉ ActiveSupport), bạn có thể sử dụng một lớp lót sau: 'director, producer, writer = entry.values_at ('director', 'producer', 'writer')'. Thật không may là bạn phải gõ từng tên biến hai lần (thay vì 0 lần khi bạn yêu cầu), nhưng nó vẫn là cách súc tích nhất mà tôi đã tìm thấy để làm điều này. – antinome
có thể trùng lặp của [Cách tạo động một biến cục bộ?] (Http://stackoverflow.com/questions/18552891/how-to-dynamically-create-a-local-variable) – Ajedi32