Как передать строковую структуру параметров в метод? - PullRequest
0 голосов
/ 10 июля 2019

В Groovy, какова возможность передачи строковой структуры параметров в метод.

Я создал метод, как показано ниже.Метод выполняет некоторые конкатенации строк с учетом переданных параметров.Я разработал способ передачи двух параметров для каждой строки.Каковы возможности для передачи более двух параметров.Я хочу, чтобы он был максимально читабельным.

Текущий код с третьими параметрами как глобальный.

            createString([
                    "label1"     : 2,
                    "label2"     : 2 + "number",
                    "label3"     : null,
                    "label4"     : "number" + 2
            ], true)

А остальное:

    private String convert(Object val, boolean toUpper) {
        (toUpper) ? val.toString().toUpperCase() : val.toString()
    }

    private String createString(Map<String, Object> params, boolean toUpper) {
        def result = "result: ["
        params.findAll { it.value != null }.each { result += " " + it.key + "->" + convert(it.value, toUpper) }
        result + " ]"
    }

Я хочу иметьчто-то, что я могу использовать так:

            createString([
                    "label1"     | 2            | true,
                    "label2"     | 2 + "number" | false,
                    "label3"     | null         | false,
                    "label4"     | "number" + 2 | true,
            ], true)

1 Ответ

3 голосов
/ 10 июля 2019

Вы можете сделать:

private String createString(List... elements) {
    "result: [" + elements.findAll { it[1] != null }.collect { key, val, upper ->
        "$key->${convert(val, upper)}"
    }.join(' ') + "]"
}

println createString(
  ["label1", 2,            true],
  ["label2", 2 + "number", false],
  ["label3", null,         false],
  ["label4", "number" + 2, true]
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...