首页 > 解决方案 > 如何在不将其分配给变量的情况下获得闭包的输出?

问题描述

我想把它写成一行,而不必做变量赋值:

def output = myclosure [sdfsdf:"sdfsdf"] // should return "somestring"
assert output == "somestring"

我无法弄清楚只做这样的事情的语法: assert myclosure: "sdfsdfds" == "somestring"

标签: groovy

解决方案


您可以在不将其输出分配给变量的情况下评估闭包:

    def aClosure = {
        "somestring"
    }
    assert aClosure() == "somestring"

    assert {"somestring"}() == "somestring"

    def bClosure = {param ->
        param = "somestring"
    }
    assert bClosure("whatever") == "somestring"
    assert bClosure() == "somestring"

    assert {param -> "somestring"}() == "somestring"

推荐阅读