2016-10-28 4 views
1

Глядя на заводной manual, я вижу, что я должен быть в состоянии использовать параметры по умолчанию, в муфтах, например, так:По умолчанию параметр закрытия

def closureWithTwoArgAndDefaultValue = { int a, int b=2 -> a+b } 
assert closureWithTwoArgAndDefaultValue(1) == 3 

Однако, бег, что в groovysh дает мне следующую ошибку:

ERROR groovy.lang.MissingMethodException: No signature of method: groovysh_evaluate.closureWithTwoArgAndDefaultValue() is applicable for argument types: (java.lang.Integer) values: [1]

Может ли кто-нибудь сказать мне, почему?

+0

У меня есть версия Groovy: 2.4.7 JVM: 1.8.0_112 Поставщик: Oracle Corporation OS: Linux', работающий на Arch Linux ... Вы запускали это на 'groovysh'? – JonesV

ответ

0

Попробуйте опустить def:

closureWithTwoArgAndDefaultValue = { int a, int b=2 -> a+b } 
assert closureWithTwoArgAndDefaultValue(1) == 3 

Для дальнейшего объяснения см here.

+0

Похож на штучный материал, но я не понимаю его полностью? Ваше решение работает в 'groovysh', но моя проблема в том, что я пытаюсь запустить это из JenkinsFile, и там я получаю' java.lang.NoSuchMethodError: такой метод DSL-метода не найден среди шагов с вашим решением ... но это может быть проблемой только с Дженкинсом. – JonesV

+0

Похоже, что у меня проблема, связанная с jenkins, так как я могу запустить версию _with_ 'def' в' groovyConsole' ... – JonesV

+0

@JonesV, это не 'groovyConsole', а' groovysh'. – Opal

Смежные вопросы