2013-01-07 50 views
8

Có cách nào (meta programmation?) Để đọc/ghi một biến cá thể khi chúng ta chỉ biết tên chuỗi của nó?Cách truy cập biến mẫu từ "tên chuỗi" của nó?

Ví dụ: tôi có biến số @my_var được sử dụng trong một phương thức lớp. Trong quá trình này, tôi sẽ hapen để có một chuỗi "my_var" cho tôi biết để thay đổi biến thể @my_var.

Tất nhiên tôi có thể sử dụng câu lệnh "if", nhưng tôi muốn nó hoạt động hơn vì tôi sẽ có khả năng có nhiều biến mẫu khác nhau trong phương thức của mình.

Tôi đã nghĩ đến một cái gì đó với "my_var" .classify và cái gì khác ...

Hiện ai có một đầu mối?

Nhờ sự giúp đỡ của bạn

Trả lời

14

Sử dụng instance_variable_setinstance_variable_get. Xin lưu ý rằng chuỗi cần phải có hàng đầu @:

@foo = "bar" 
# => "bar" 
instance_variable_get("@foo") 
# => "bar" 
instance_variable_set("@foo", "baz") 
# => "baz" 
@foo 
# => "baz" 
Các vấn đề liên quan