2011-05-19 4 views
1

Le code suivant fait deux choses:Je ne veux pas faire 2 appels API pour cette

  1. Vérifie si l'élément a la clé « checkins »
  2. Obtient la valeur checkins si elle a la clé

Je n'aime vraiment pas faire deux appels API pour cela. Cela a vraiment ralenti mon code, mais je suis obligé de le faire car si j'appelle l'API pour les checkins et que la clé n'existe pas, alors mon code explose. Il doit y avoir une meilleure façon de faire cela.

if graph.get_object(self.place_id).has_key?("checkins") 
    checkins = graph.get_object(self.place_id)["checkins"] - self.checkins 
else 
    checkins = self.checkins 
end 
+0

Vous n'êtes pas familier avec fb-graph-api, mais vous ne pourriez pas affecter '' graph.get_object ... à une variable, puis faites votre magie? – nowk

+0

si je fais graph.get_object (self.place_id) ["checkins"], alors je suis retourné avec un –

+0

nul ... si checkins n'existe pas pour cet objet (arrive de temps en temps) –

Répondre

1
graph_checkins = graph.get_object(self.place_id)["checkins"] 
checkins = if graph_checkins 
      graph_checkins - self.checkins 
      else 
      self.checkins 
      end 
+0

Merci beaucoup. Cela a vraiment amélioré les performances. –

+0

@JZ, je suis content que cela a aidé. Piratage heureux! –

1

Voici ce que je voulais dire par mon commentaire:

graph_object = graph.get_object(self.place_id) # assign return to variable 
if graph_object.has_key?("checkins") 
    # reference returned object, no need to request it again 
    checkins = graph_object["checkins"] - self.checkins 
else 
    checkins = self.checkins 
end 

* J'utilise l'exemple de Wayne Conrad, plus simple.

Questions connexes