Как установить значение по умолчанию для строковой переменной в Groovy - PullRequest
0 голосов
/ 12 мая 2019

У меня есть следующая функция, определенная в groovy

def deploy_app(Map InputParameters, List OptionalParameters = []) {
    String InputParametersString = InputParameters.inject([]) { acc, val -> acc + "--set ${val.getKey()}=${val.getValue()}" }.join(" ")
    .
    .
    .
}

Что я хочу сделать, так это иметь возможность иметь параметр map InputParameters, который будет иметь значение по умолчанию для пустой карты И также для строки InputParametersString иметь значение по умолчанию пустой строки, если InputParameters параметр не передан или является пустым.

Вот то, что я пытался использовать оператор Элвиса , но не работает

def deploy_app(Map InputParameters = [:], List OptionalParameters = []) {
    String InputParametersString = "" ?: InputParameters.inject([]) { acc, val -> acc + "--set ${val.getKey()}=${val.getValue()}" }.join(" ")
    .
    .
    .
}

также пробовал это

def deploy_app(Map InputParameters = [:], List OptionalParameters = []) {
    String InputParametersString = InputParameters.inject([]) { acc, val -> acc + "--set ${val.getKey()}=${val.getValue()}" }.join(" ") ?: ""
    .
    .
    .
}

Так как мне сделать это, чтобы при отсутствии InputParameters я мог иметь строку InputParametersString в качестве значения пустой строки?

спасибо

1 Ответ

0 голосов
/ 12 мая 2019
def deploy_app(Map InputParameters=[:], List OptionalParameters = []) {
    String InputParametersString = InputParameters.inject([]) { acc, val -> acc + "--set ${val.getKey()}=${val.getValue()}" }.join(" ")
}


def r = deploy_app()

assert r instanceof String
assert r.length()==0

InputParametersString, оцененное как пустая строка, если входная карта пуста

...