1

メソッドから値を返そうとする次のコードがあります。

temp = "123"
return temp

メソッドを呼び出して戻り値を割り当てる次の行があります。

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

しかし、検査しようとするperson_connectionsと、別のオブジェクト文字列が表示されます。temp 変数の実際の値を返す方法はありますか?

  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
4

1 に答える 1

2

サミーがコメントで言ったように:

Rubyでは、最後のステートメントが返されます。

したがってget_person_connections、を見ると、最後の行はselfです。この場合、メソッドが呼び出されたインスタンスを返すことを意味します@client


追記:解決策は削除することselfですが、メソッドを他の場所で使用する場合は、メソッドのチェーンを許可するためにリターンselfがよく使用されるため注意してください(メソッドでそれを行うことはほとんど意味がありませんがget)。

于 2012-05-29T18:14:12.753 に答える