2016-12-14 7 views
0

У меня есть сценарий, который просто делаетНеобязательный параметр в Groovy Script

// TODO: assign default value if not defined 
println optionalParameter 

Когда я вызываю его с помощью:

new GroovyShell(new Binding([optionalParameter: 'text'])).evaluate(script) 

он работает отлично. Но если я запускаю его без параметра, как показано ниже:

new GroovyShell().evaluate(script) 

он терпит неудачу с MissingPropertyException.

Как назначить значение по умолчанию для optionalParameter, чтобы я не получил MissingPropertyException?

+0

Если сценарий может быть изменен вы можете добавить «DEF optionalParameter» в самом начале. – Gabriel

+0

Или добавить: 'new Binding ([]. WithDefault {'default'})' – Opal

+0

@Gabriel Я могу только изменить скрипт. 'def optionalParameter' не работает, поскольку он просто объявляет новую переменную, скрывающую исходную. –

ответ

1

Добавление этого кода в скрипт работает для меня:

String value 
if (binding.hasVariable('optionalParameter')) { 
    value = binding.getVariable('optionalParameter') 
} else { 
    value = 'defaultValue' 
} 
println value 
+1

Может ли это не быть упрощенным для' optionalParameter = optionalParameter?: 'defaultValue''? Я считаю, что объявление переменных без указания типа или 'def' присваивает переменную привязке. – kinbiko

+1

Затем я получаю 'groovy.lang.MissingPropertyException: Нет такого свойства: optionalParameter' –