私は、次の2つの変数を持っている:設定変数A
私が行うことができるようにしたいa = 1;
b = 'a';
変数a
の値は、現在設定されているので、
SOMETYPEOFEVALUATION(b) = 2;
〜2
。
a # => 2
これは可能ですか?
具体的には、Facebook APIを使用しています。各オブジェクトにはさまざまな異なる接続(友人、好きな人、映画など)があります。私はこれらすべての接続のFacebook APIへの最後の呼び出しの状態を保存するパーサークラスを持っています。これらの状態は、それらを更新するために呼び出さなければならないGETに対応してすべて名前が付けられます。
たとえば、Music接続を更新するには、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
Railsと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
は動作しませんでした。 – user1114840
上記の編集更新を参照してください、とattr_accessorは、基本的には、たとえば変数 – keymone