1

我在这里找到了我想要的一个很好的例子:

在此处输入图像描述

基本上能够将字符串作为带有表达式的 groovy 脚本执行,但如果条件为假,我想显示有关为什么它被评估为假的详细信息。

编辑

我想要一个像这样工作的实用方法:

def expression = "model.book.title == \"The Shining\""
def output = magicMethod(expression)

// output.result: the exact result of executing expression
// output.detail: could be a string telling me why this expression returns true or false, similar to de image

我认为这可能是Eval.me+assert和捕获异常以获取详细信息的组合

4

1 回答 1

1

是的,它适用于断言,感谢@Justin Piper 的想法

这是片段:

def model = [model:[book:[title:"The Shinning"]]]

def magicMethod= { String exp ->
    def out = [:]
    out.result = Eval.x(model,"x.with{${exp}}")
    try{
        if(out.result){
            Eval.x(model,"x.with{!assert ${exp}}")
        }else{
            Eval.x(model,"x.with{assert ${exp}}")
        }
    }catch(Throwable e){
        out.detail = e.getMessage()
    }
    return out
}


def expression = "model.book.title == \"The Shining\""
def output = magicMethod(expression)

println "result: ${output.result}"
println "detail: ${output.detail}"
于 2012-10-23T18:04:01.670 回答