0

我正在使用我在网上找到的一些代码:

def person_path(options)
  # This is where the path of the query is constructed.

  path = "/people/"     # For this section of the LinkedIn API
  if id = options.delete(:id)
    path += "id=#{id}"
  elsif url = options.delete(:url)
    path += "url=#{CGI.escape(url)}"
  else
    path += "~"
  end
end 

我不完全确定它的作用。我想做的是让它构造一个类似这样的字符串:http ://api.linkedin.com/v1/people/~:(current-status ),我从LinkedIn开发人员文档中获得:https:/ /developer.linkedin.com/documents/profile-api

关于我应该通过什么功能以及它如何完成它的功能的任何想法?

谢谢!

4

2 回答 2

3

虽然没有说明“选项”是什么,但在 Ruby 中将选项作为键值对的哈希传递给方法是非常常见的,所以我想说选项就是这样(99% 的确定性)。这是理解其余代码的关键部分。

我相信使用哈希上的#delete 方法是为了拉出键值对并一次性分配值,同时利用返回对象的“真实性”。

http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-delete

我所说的“真实性”是指在 Ruby 中,除了“nil”和“false”之外,所有对象都评估为“true”。

其余的是简单的 if-else 控制流逻辑,您将在任何其他语言中看到,所以我希望这是有道理的。

于 2012-05-14T23:14:35.233 回答
1

如果在选项中找到 id 或 url,这只会创建一个形式为“/people/id=foo”或“/people/url=foo_with_%_escapes”的路径。作为副作用,它会删除从选项中找到的那个。如果它没有找到任何一个,它会给出“/people/~”

于 2012-05-14T23:12:46.577 回答