我正在尝试打印n
并在符号键的末尾标记它,每次n
递增;那可能吗?
这是代码部分......
# User info
client = Instagram.client(:access_token => session[:access_token])
@user = Hash.new
@user[:info] = client.user
# User media
@user[:recent_media] = Hash.new
@user[:recent_media][:p1] = client.user_recent_media
# user_recent_media only ever retrieves in 20 out of x image links; x being total profile images
(1..9).each do |n|
page_max_id = @user[:recent_media][:p<n>].pagination.next_max_id
return if page_max_id.nil?
@user[:recent_media][:p<n+1>] = client.user_recent_media(max_id: page_max_id)
end
答案 0 :(得分:4)
您希望避免在此处使用符号作为键,因为您正在动态生成它们。符号永远不会被垃圾收集,因此会导致内存泄漏。如果你可以改为字符串,你可以进行字符串插值,例如"p#{n + 1}"
。否则,最后使用.to_sym
做同样的事情会有效,但要注意。
答案 1 :(得分:2)
当然,你可以象征字符串。尝试使用:"p#{n}"
或"p#{n}".to_sym
。
答案 2 :(得分:2)
:p1
,:p2
,... - 这些不是变量,而是符号。您可以构造一个字符串,然后将其转换为符号,如下所示:
@user[:recent_media]["p#{n + 1}".to_sym] = ...
你应该知道这种技术会导致内存泄漏,因为一旦创建了符号,就无法进行垃圾回收。
答案 3 :(得分:1)
(1..9).each do |n|
page_max_id = @user[:recent_media]["p#{n}".to_sym].pagination.next_max_id
return if page_max_id.nil?
@user[:recent_media]["p#{n+1}".to_sym] = client.user_recent_media(max_id: page_max_id)
end
答案 4 :(得分:1)
您可以使用:
@user[:recent_media][:"p#{n+1}"] = #...
您也可以通过插值创建符号:
:"my_symbol1" :"my_symbol#{1 + 1}"
答案 5 :(得分:0)
to_sym
是你的朋友!
@user[:recent_media]["p#{n+1}".to_sym] = client.user_recent_media(max_id: page_max_id)