2012-05-29 140 views
1

我有這樣的代碼,試圖返回從方法的值:如何從方法返回特定值?

temp = "123" 
return temp 

,我有這行調用該方法,並分配返回值:

person_connections = @client.get_person_connections(:id => current_user_id) 

但是當我嘗試檢查person_connections,它顯示了一些不同的對象字符串。任何想法如何返回臨時變量的實際值?

def get_person_connections(options = {}) 
    person_id = options[:id] 
    path = "/people/id=" + person_id + ":(num-connections)" 
    query_connections(path, options) 
    self 
    end 

private 

def query_connections(path, options={}) 
    fields = options.delete(:fields) || LinkedIn.default_profile_fields 

    if options.delete(:public) 
    path +=":public" 
    elsif fields 
    path +=":(#{fields.map{ |f| f.to_s.gsub("_","-") }.join(',')})" 
    end 

    headers = options.delete(:headers) || {} 

    params = options.map { |k,v| v.is_a?(Array) ? v.map{|i| "#{k}=#{i}"}.join("&") : "#{k}=#{v}" }.join("&") 

    path += "?#{params}" if not params.empty? 

    temp_var = get(path, headers) 

    hash = JSON.parse(temp_var) 
    conn = hash["numConnections"] 
end 
+0

您能否顯示'get_person_connections'函數? – Makoto

+3

首先,你不需要使用'return'。在Ruby中,最後一條語句將被返回。另外,告訴什麼是*一些不同的對象字符串*會很有幫助。 –

+0

剛剛編輯原始問題:) – GeekedOut

回答

2

由於薩米在評論說:

在Ruby中,最後一條語句將被退回。

所以,如果我們看看get_person_connections,我們看到最後一行是self。這意味着它返回在這種情況下調用方法的實例,即@client


其他注意事項:解決辦法是刪除self,但如果該方法被用於其他地方要小心,因爲返回self經常被用來允許方法鏈接(儘管它很難情理之中的事情上一種get方法)。

+0

所以現在我這樣做:hash = JSON.parse(temp_var) conn = hash [「numConnections」] puts conn.inspect並顯示數字。但在原始函數上,值仍然是對象。所以這個號碼沒有被分配。 – GeekedOut

+0

如果您希望'query_connections'返回連接數,請將其保留在您的問題中。如果你想'get_person_connections'也返回連接數量,刪除最後一個'self'。這些方法如下所示:'@client。 get_person_connections' - >'query_connections'(所以'query_connections'的返回值被髮送到'get_person_connections',並且'get_person_connections'的返回值被賦給'person_connections'。 – mbillard