这是代码。有谁能找到原因? 这个节目是为了显示一位朋友的专辑中的照片。
我认为这个程序使用facebook api 3次,所以可能有重点。 但我对事物没有任何想法,而不是这段代码。
graph = Koala::Facebook::API.new(session[:access_token])
freegraph = Koala::Facebook::API.new
friends = graph.get_object("me/friends")
friendsIds = Array.new
friends.each do |f| friendsIds << f["id"] end
fsinfo = freegraph.get_objects(friendsIds)
@realFriends = Array.new
fsinfo.each do |f|
if f[1]["gender"].present? && (f[1]["gender"] != "male")
@realFriends << f[1]
end
end
rFids = @realFriends.map do |rF| rF["id"] end
albums = graph.get_object("albums?ids="+rFids.join(","))
album_ids = Array.new
albums.each do |user|
album_ids += user[1]["data"].map do |a| a["id"] end
end
randAlbumIds = Array.new
20.times do
randAlbumIds << album_ids.at(rand(album_ids.count))
end
imgList = graph.get_object("photos?ids="+randAlbumIds.join(","))
imgObjs = Array.new
imgList.each do |img|
imgObjs += img[1]["data"]
end
if params[:tags].present?
@photos = imgObjs.select do |i| i["tags"].present? end
else
@photos = imgObjs
end
答案 0 :(得分:3)
但是我更关心你的代码......你写了
@realFriends = Array.new
fsinfo.each do |f|
if f[1]["gender"].present? && (f[1]["gender"] != "male")
@realFriends << f[1]
end
end
rFids = @realFriends.map do |rF| rF["id"] end
你正在寻找一系列女性朋友的想法。所以我会这样做:
@female_friend_ids = fsinfo.map {|friend| friend["id"] if friend.first["gender"] != "male"}.compact
这将返回一系列不是男性的朋友ID。地图将返回[nil,3435,656],并摆脱我们称之为紧凑的nils。
它可读,并且执行速度更快,并减少垃圾收集时间。
无法自拔。更!
randAlbumIds = Array.new
20.times do
randAlbumIds << album_ids.at(rand(album_ids.count))
end
应该只是
random_album_ids = album_ids.shuffle.take(20)
(这一切只是Ruby非常棒)