Russian subtitles

← 02-07 Выходные данные (Решение)

Get Embed Code
9 Languages

Showing Revision 1 created 07/16/2013 by handfulofvoid.

  1. Итак, этот вопрос слегка сложнее.
  2. Чтобы ответить на него, нам нужно взглянуть на следующий за процедурой код
  3. и вспомнить, что мы собираемся заменить процедурой эти четыре строки.
  4. После выполнения процедуры мы выводим значение переменной url.
  5. Это значит, что url определенно понадобится нам на выходе процедуры,
  6. но все варианты и так включают значение url.
  7. Но это еще не все, нужно взглянуть и на вторую строчку.
  8. В ней используются значения page и end_quote.
  9. Значение page здесь равно значению page до выполнения процедуры,
  10. поэтому нам не обязательно возвращать из процедуры значение page.
  11. То есть ее не должно быть среди выходов нашей процедуры.
  12. Мы уже знаем ее значение.
  13. И знали его еще до вызова процедуры.
  14. Процедура не меняет значение page.
  15. Поэтому нет смысла включать ее в выходные данные.
  16. Итак, этот вариант неправильный. Значение page нам не нужно.
  17. А значение end_quote, напротив, стоит добавить в состав выходных данных.
  18. Причина, по которой нам нужно выходное значение end_quote
  19. в том, что нам нужно знать позицию завершающей кавычки,
  20. чтобы оставить в page только следующий за этой кавычкой текст и чтобы при следующем поиске
  21. не «найти» повторно уже обнаруженную ссылку.
  22. Поэтому нам и правда нужно это значение, а значит лучший вариант ответа таков:
  23. на выходе процедуры должно быть два значения: переменной url и переменной end_quote.
  24. Четвертый вариант тоже мог бы сработать.
  25. Возвращая из процедуры значения url и start_link,
  26. мы в принципе могли бы найти способ двигаться по тексту страницы не находя повторно те же самые ссылки,
  27. но нам пришлось бы переписать весь этот код.
  28. Нам нужно было бы искать следующую открывающую кавычку начиная от позиции start_link.
  29. А для этого пришлось бы сначала найти предыдущую закрывающую.
  30. По сути, нам пришлось бы заново вычислить значение end_quote.
  31. Поэтому намного полезнее возвращать значение end_quote,
  32. чем значение start_link.
  33. Вот почему третий вариант ответа – самый лучший.