2012-05-14 3 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

Ahhhh, не динамические языки весело (когда у вас нет хорошей документации)? –

+0

Lol не очень весело сейчас, но я думаю, это улучшается ... Я новичок с Ruby. – Awesomeness

ответ

3

Несмотря на то, что не указано, что такое «опции», чрезвычайно важно передавать опционы методу в виде пары «ключ-значение» в Ruby, поэтому я бы сказал, что варианты - это просто (с 99% уверенностью). Это часть, которая является ключом к пониманию остальной части кода.

Я считаю, что метод #delete для хэша используется, чтобы вытащить пару ключ-значение и присвоить значение за один ход, в то же время используя «правду» возвращенного объекта.

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

И «truthiness», я имею в виду, что в Ruby, все объекты оценки «истина», кроме «ноль» и «ложь».

Остальное - это простая логика логического управления if-else, которую вы увидите на любом другом языке, поэтому я надеюсь, что это имеет смысл.

1

Это просто создает путь к форме «/ people/id = foo» или «/ people/url = foo_with _% _ escapes», если он находит id или url в параметрах. Как побочный эффект, он удаляет тот, который он находит из параметров. Если он не находит ни одного, он дает «/ people/~»

Смежные вопросы