是否可以在groovy中创建一个不能完全执行的命令链? 例如:
when(booleanVar).then(returnExpression)
如果booleanVar为false,我根本不想执行returnExpression,因为它可能是对某些外部服务的方法调用,所以我只想在必要时执行它。所以我希望“when”方法能够控制是否应该执行链的其余部分。 我想在DSL中使用它,所以它会像这样使用:
when booleanVar then returnExpression
我宁愿避免使用闭包,因此语法会更不易读。
答案 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)