Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy可停止命令链_Groovy_Dsl - Fatal编程技术网

Groovy可停止命令链

Groovy可停止命令链,groovy,dsl,Groovy,Dsl,在groovy中是否可以创建一个不能完全执行的命令链? 例如: when(booleanVar).then(returnExpression) 如果booleanVar为false,我根本不希望执行returnExpression,因为它可能是对某个外部服务的方法调用,所以我只希望在必要时执行它。所以我希望“when”方法能够控制是否应该执行链的其余部分。 我想在DSL中使用它,所以它的使用方式如下: when booleanVar then returnExpression 我宁愿避免使用

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

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

when booleanVar then returnExpression
我宁愿避免使用闭包,因为这样语法的可读性就会降低。

如果when()将false转换为null,您可以这样使用,但我认为一旦去掉括号,它就不适合在DSL中轻松阅读,甚至不确定没有括号它是否能正常工作。但这是有可能的

when(booleanVar)?.then(returnExpression)

我最终使用AST转换来更改调用:

when(booleanVar).then(returnExpression)
为此:

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