Ammonite/Статистика відвідувань вікісторінок: відмінності між версіями

Вилучено вміст Додано вміст
Ilya (обговорення | внесок)
Ilya (обговорення | внесок)
Рядок 169:
 
Наприклад, можна відсортувати список за першим елементом — назвою статті:
<source lang="scala">
val byName = pairs.sortBy(_._1)
</source>
 
або відсортувати список за другим елементом — кількістю переглядів у зворотному (тобто спадному — від більшої до меншої кількості) порядку.
<source lang="scala">
val byViews = pairs.sortBy(- _._2)
</source>
 
Хоча такий код доволі лаконічний, для його розуміння треба бачити з контексту, що першим елементом є назва статті, а другим — кількість переглядів. Допомагають зрозуміти також назви змінних <tt>byName</tt> і <tt>byViews</tt>.
Однак, коли програми стають більшими, це може стати незручним і при обробці пари можна також давати назву її елементам:
 
<source lang="scala">
val byName = pairs.sortBy{ case (name, views) => name }
</source>
<source lang="scala">
val byViews = pairs.sortBy{ case (name, views) => - views }
</source>
 
Так дещо зрозуміліше, але багатослівніше. Крім того, ці назви елементам пари треба заново вказувати при кожному звертанні.
 
Тому краще створити клас із двома полями name і views:
<source lang="scala">
class PageViews(val name: String, val views: Int)
</source>
 
і перетворити список пар у список елементів класу PageViews
<source lang="scala">
val pageViews = pairs.map{ case (name, views) => new PageViews(name, views) }
</source>
 
Тепер код для роботи з даними про кількість переглядів виглядає і лаконічно і зрозуміло:
<source lang="scala">
val byName = pageViews.sortBy(_.name)
</source>
<source lang="scala">
val byViews = pageViews.sortBy(_.views)
</source>
 
== Річна статистика ==