2012-05-29 97 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