2012-05-14 48 views
0

我有一些代碼,我在網上找到了工作:Rails的 - 試圖瞭解一段代碼

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

什麼我應該通過這個功能,如何準確的任何想法它實現它做什麼?

謝謝!

+0

啊,是不是動態語言好玩(當你沒有很好的文檔)? –

+0

Lol目前還沒有很多樂趣,但我想它會提高......我是一個Ruby的新手。 – Awesomeness

回答

3

雖然沒有說明'options'是什麼,但是將選項作爲哈希鍵值對傳遞給方法是非常常見的Ruby,所以我會說選項就是這樣(99%的確定性)。這是理解其餘代碼的關鍵。

我相信哈希上的#delete方法被用來抽出鍵值對,並在一次移動中賦值,同時利用返回對象的「真實性」。

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

並以「感實性」,我的意思是,在Ruby中,所有對象評價爲「真」除了「零」和「假」。

其餘的很簡單if-else控制流程邏輯,你會看到任何其他語言,所以我希望這是有道理的。

1

如果它在選項中找到id或url,它只會創建一個形式爲「/ people/id = foo」或「/ people/url = foo_with _%_ escapes」的路徑。作爲副作用,它會刪除從選項中找到的那個。如果它沒有找到任何一個,它會給出「/ people /〜」