я привести пейджинг часто (с учетом номера страницы и начало размера страницы высчитывают, конец и общее количество страниц), и я портировал эту маленькую функцию из Java, чтобы помочь:Лучший способ сделать результат пейджинга в Scala
def page(page: Int, pageSize: Int, totalItems: Int) = {
val from = ((page - 1) * pageSize) + 1
var to = from + pageSize - 1
if (to > totalItems) to = totalItems
var totalPages: Int = totalItems/pageSize
if (totalItems % pageSize > 0) totalPages += 1
(from, to, totalPages)
}
а на приемной стороне:
val (from, to, totalPages) = page(page, pageSize, totalItems)
Хотя это работает, я уверен, что есть более читаемые и функциональные способы сделать то же самое в Scala. Что было бы более scala-подобным подходом?
В частности, я пытаюсь найти более хороший способ сказать:
var to = from + pageSize - 1
if (to > totalItems) to = totalItems
В Java я мог бы сделать что-то вроде:
from + pageSize - 1 + (to > totalItems) ? 1 : 0;
Спасибо Rex. Я согласен с изменением имени функции. Я просто что-то бросил, чтобы убедиться, что он скомпилирован. Я думаю, что «мин» - это четкое улучшение, а «if» решает использовать var. Было бы лучше, если бы было что-то еще более краткое? : на Java. – Ike 2010-12-16 22:07:51
@Ike - В тройку встроен не встроенный оператор, но вы можете легко определить свой собственный. См. Например, http://stackoverflow.com/questions/2705920 – 2010-12-17 02:47:09