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>
== Річна статистика ==
|