我有以下兩個變量:與名稱設定變量A存儲在變量B
a = 1;
b = 'a';
我希望能夠做
SOMETYPEOFEVALUATION(b) = 2;
使變量a
的值現在設置到2
。
a # => 2
這可能嗎?
具體來說,我正在使用Facebook API。每個對象都有各種不同的連接(朋友,喜歡,電影等)。我有一個解析器類,用於存儲所有這些連接的最後一次調用Facebook API的狀態。這些狀態都被命名爲與您必須調用以更新它們的GET相對應的狀態。
例如,要更新音樂連接,您使用https://graph.facebook.com/me/music?access_token= ...我將結果存儲在一個名爲updated_music變量。對於書籍,其updated_books。如果我創建了所有這些連接類型名稱的列表,我最好想做這樣的事情。
def update_all
connection_list.each do |connection_name|
updated_SomeTypeOfEvalAndConcatenation(connection_name) = CallToAPI("https://graph.facebook.com/me/#{connection_name}?access_token=...")
end
end
很新的兩個軌和StackOverflow上所以請讓我知道是否有更好的方式來遵循任何約定。
試過以下。
class FacebookParser
attr_accessor :last_albums_json,
def update_parser_vars(service)
handler = FacebookAPIHandler.new
connections_type_list = ['albums']
connections_type_list.each do |connection_name|
eval "self.last_#{connection_name}_json = handler.access_api_by_content_type(service, #{connection_name})['data']"
end
#self.last_albums_json = handler.access_api_by_content_type(service, 'albums')['data']
end
end
而且我得到這個錯誤
undefined local variable or method `albums' for #<FacebookParser:0xaa7d12c>
工作正常,當我使用的是被註釋掉線。
'instance_variable_set',不'set_instance_variable' – steenslag 2011-12-24 21:29:00
沒有工作。請參閱上面的編輯 – user1114840 2011-12-24 23:54:48
更新,並btw你*可以*在你的代碼中使用instance_variable_set,因爲attr_accessor基本上是生成getter/setter例如變量 – keymone 2011-12-25 11:05:24