2016-03-08 20 views
0

groovy有可能創建一個不會完全執行的命令鏈嗎? 例如:Groovy stoppable命令鏈

when(booleanVar).then(returnExpression) 

如果booleanVar是假的,我不希望在所有執行returnExpression,因爲它可能是一個方法調用一些外部的服務,所以我只是想,如果執行它必要。所以我希望「when」方法能夠控制是否應該執行鏈的其餘部分。 我想在DSL使用它,所以它會使用這樣的:

when booleanVar then returnExpression 

我寧願避免使用閉合,導致那麼語法會少可讀。

回答

0

如果when()將false翻譯爲null,那麼可以使用safe navigation operator這樣的,但我認爲它不適合在DSL中輕鬆讀取數據 - 一旦您刪除括號 - 甚至不知道它是否會沒有他們正確工作。但這是一種可能性。

when(booleanVar)?.then(returnExpression) 
1

我結束了使用AST轉換來改變調用:

when(booleanVar).then(returnExpression) 

這樣:

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