如何从方法返回特定值?

时间:2012-05-29 18:02:11

标签: ruby

我有这个代码试图从方法中返回一个值:

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

1 个答案:

答案 0 :(得分:2)

Samy在评论中说:

  

在Ruby中,将返回最后一个语句。

因此,如果我们查看get_person_connections,我们会看到最后一行是self。这意味着它返回调用该方法的实例,在这种情况下为@client


附加说明:解决方案是删除self,但如果在其他地方使用该方法则要小心,因为返回self通常用于允许链接方法(虽然在get方法上做到这一点几乎没有意义。