2011-05-19 123 views
1

2 API調用下面的代碼做兩兩件事:我不想讓這個

  1. 檢查,看看是否有項目的關鍵「簽到」
  2. 獲取簽入的值,如果它有密鑰

我真的不喜歡爲此做兩個API調用。它確實減慢了我的代碼,但我不得不這樣做,因爲如果我爲checkins進行API調用,並且密鑰不存在,那麼我的代碼就會崩潰。必須有更好的方法來做到這一點。

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

不熟悉fb-graph-api,但是不能將'graph.get_object ...'賦給一個變量,然後做你的魔法嗎? – nowk 2011-05-19 22:47:18

+0

如果我做graph.get_object(self.place_id)[「checkins」],那麼我會返回一個無 – 2011-05-19 22:54:20

+0

...如果對象不存在該對象(不時發生) – 2011-05-19 22:54:49

回答

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

非常感謝。這確實提高了性能。 – 2011-05-20 16:32:36

+0

@JZ,我很高興它有幫助。快樂黑客! – 2011-05-20 19:43:37

1

下面是我通過我的評論的意思是:

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 

*我會使用Wayne Conrad的例子,簡單。