Набор значений массива Kotlin java String.format

avatar
양기열
9 августа 2021 в 04:13
64
1
2

Я хочу провести рефакторинг этого кода. если размер == 5... я не хочу добавлять код. просто используйте для цикла или потока или другого решения в качестве аргументов размера.

private fun formatTest(args: List<String>): String {
    var size = args?.size
    return when {
        size == 1 -> java.lang.String.format(code.message, args[0])
        size == 2 -> java.lang.String.format(code.message, args[0], args[1])
        size == 3 -> java.lang.String.format(code.message, args[0], args[1], args[2])
        size == 4 -> java.lang.String.format(code.message, args[0], args[1], args[2], args[3])
        else -> java.lang.String.format(code.message)
    }
}
Источник
Sweeper
9 августа 2021 в 04:40
0

Я только что понял, что, возможно, неправильно истолковал вопрос. Вы имеете в виду, что вам нужен простой способ «продолжить шаблон» для всех значений из size, или вы хотите реорганизовать код, показанный как есть? Мой ответ за последнюю интерпретацию, но если вы действительно хотите первую, в любом случае адаптироваться тривиально.

Ответы (1)

avatar
Sweeper
9 августа 2021 в 04:31
3

Сначала преобразуйте список в массив, затем используйте оператор *, чтобы "распространить" массив на varargs.

private fun formatTest(args: List<String>) =
    if (args.size < 5) {
        String.format(code.message, *args.toTypedArray())
    } else {
        code.message
    }