Groovy可停止的命令链

时间:2016-03-08 14:08:20

标签: groovy dsl

是否可以在groovy中创建一个不能完全执行的命令链? 例如:

when(booleanVar).then(returnExpression)

如果booleanVar为false,我根本不想执行returnExpression,因为它可能是对某些外部服务的方法调用,所以我只想在必要时执行它。所以我希望“when”方法能够控制是否应该执行链的其余部分。 我想在DSL中使用它,所以它会像这样使用:

when booleanVar then returnExpression

我宁愿避免使用闭包,因此语法会更不易读。

2 个答案:

答案 0 :(得分:1)

我最终使用AST Transformation来改变调用:

when(booleanVar).then(returnExpression)

到此:

when({booleanVar}).then({returnExpression})

答案 1 :(得分:0)

如果when()将false翻译为null,你可以像这样使用safe navigation operator,但我不认为一旦剥去括号,它就能在DSL中轻松阅读 - 而不是即使没有它们也能确定它是否能正常工作。但这是一种可能性。

when(booleanVar)?.then(returnExpression)