Котлинский эквивалент Свифта отсортирован (по :) - PullRequest
1 голос
/ 18 мая 2019

Я не уверен, как использовать функцию, подобную сортированной Swift (по :). Я пытаюсь использовать функцию Котлина sortedby (), но мне чего-то не хватает.

Тест - это модель, а тесты - это массив для сортировки.

Код Swift для порта:

let sortedArray = tests.sorted(by: { (lhs, rhs) -> Bool in
        let lhsDisplayName = self.getDisplayName(Test: lhs).capitalized
        let rhsDisplayName = self.getDisplayName(Test: rhs).capitalized
             return lhsDisplayName < rhsDisplayName })

Ответы [ 2 ]

2 голосов
/ 19 мая 2019

Без необходимости использовать заглавные буквы для строк, вы можете использовать String.CASE_INSENSITIVE_ORDER:

val tests = arrayOf("c", "B", "a", "d")
val sorted = tests.sortedWith(String.CASE_INSENSITIVE_ORDER)
println(sorted) //[a, B, c, d]

В зависимости от того, как вы перевели getDisplayName(Test:) функцию, вы можете использовать compareBy, которая принимает переменное число функций для сортировки по:

val sortedArray = tests.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, getDisplayName))
2 голосов
/ 18 мая 2019

Я думаю, это должно выглядеть так:

val tests = arrayOf("a", "B", "c", "d")
val sorted = tests.sortedBy { it -> getDisplayName(it).capitalize() }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...