Groovy 如何修改我的闭包以添加错误消息
我有一些代码可以根据我的输入验证一些布尔规则Groovy 如何修改我的闭包以添加错误消息,groovy,Groovy,我有一些代码可以根据我的输入验证一些布尔规则 def validate(x, rules) { rules.each { if(!it(x)) throw new Exception("${x} is not valid! Validation failed!") } } def rule1 = { y -> y > 10 } def rule2 = { y -> y != 72 } def rule3 = { y -&
def validate(x, rules) {
rules.each {
if(!it(x))
throw new Exception("${x} is not valid! Validation failed!")
}
}
def rule1 = { y -> y > 10 }
def rule2 = { y -> y != 72 }
def rule3 = { y -> y < 100 }
def rules = [rule1, rule2, rule3]
def a = 12
validate(a, rules)
因为我的规则是闭包,我不确定我怎么能做到?有人能帮我怎么做吗?应该像使用Groovy truth一样简单:
def validate(x, rules) {
rules.each {
error = it x
if(error)
throw new Exception(error)
}
}
def rule1 = { it > 10 ? false : "rule 1: '$it' is not valid" }
def rule2 = { it != 72 ? false : "rule 2: '$it' is not valid" }
def rule3 = { it < 100 ? false : "rule 3: '$it' is not valid" }
def rules = [rule1, rule2, rule3]
def a = 12
validate a, rules
def验证(x,规则){
规则,每个{
错误=it x
如果(错误)
抛出新异常(错误)
}
}
def rule1={it>10?false:“规则1:'$it'无效”}
def rule2={it!=72?false:“规则2:'$it'无效”}
def rule3={it<100?false:“规则3:'$it'无效”}
def规则=[规则1、规则2、规则3]
def a=12
验证一个规则
这里还有另一个变体:
def validate(x, rules) {
rules.each { r, e ->
if(!r(x))
throw new Exception(e(x))
}
}
def rule1 = [{ it > 10 }, { "rule 1: '$it' is not valid" }]
def rule2 = [{ it != 72 }, { "rule 2: '$it' is not valid" }]
def rule3 = [{ it < 100 }, { "rule 3: '$it' is not valid" }]
def rules = [rule1, rule2, rule3]
def a = 12
validate a, rules
def验证(x,规则){
规则.each{r,e->
if(!r(x))
抛出新异常(e(x))
}
}
def rule1=[{it>10},{“规则1:'$it'无效”}]
def规则2=[{it!=72},{“规则2:'$it'无效”}]
def规则3=[{it<100},{“规则3:'$it'无效”}]
def规则=[规则1、规则2、规则3]
def a=12
验证一个规则
您可以这样尝试(每个规则都是一个映射,其中包含验证结束和错误消息):
def验证(x,规则){
规则,每个{
如果(!it.r(x))
抛出新异常(it.e)
}
}
def rule1=[r:{it=100},e:“规则3无效”]
def规则=[规则1、规则2、规则3]
def a=12
验证一个规则
将规则用作地图中的键怎么样
def validate(x, rules) {
rules.each { rule, condition ->
if(!condition(x))
throw new Exception("${rule} is not valid! Validation failed!")
}
}
def rules = [
rule1 : { y -> y > 10 },
rule2 : { y -> y != 72 },
rule3 : { y -> y < 100 }
]
def a = 12
validate(a, rules)
validate 101, rules // java.lang.Exception: rule3 is not valid! Validation failed!
def验证(x,规则){
rules.each{规则,条件->
如果(!条件(x))
抛出新异常(“${rule}无效!验证失败!”)
}
}
def规则=[
规则1:{y->y>10},
规则2:{y->y!=72},
规则3:{y->y<100}
]
def a=12
验证(a,规则)
验证101,规则//java.lang.Exception:规则3无效!验证失败!
只要您不想在错误消息中提及实际值,此功能就可以工作。
def validate(x, rules) {
rules.each {
if(!it.r(x))
throw new Exception(it.e)
}
}
def rule1 = [r: { it <= 10} , e:"rule 1 is not valid" ]
def rule2 = [r: { it == 72} , e:"rule 2 is not valid" ]
def rule3 = [r: { it >= 100}, e:"rule 3 is not valid" ]
def rules = [rule1, rule2, rule3]
def a = 12
validate a, rules
def validate(x, rules) {
rules.each { rule, condition ->
if(!condition(x))
throw new Exception("${rule} is not valid! Validation failed!")
}
}
def rules = [
rule1 : { y -> y > 10 },
rule2 : { y -> y != 72 },
rule3 : { y -> y < 100 }
]
def a = 12
validate(a, rules)
validate 101, rules // java.lang.Exception: rule3 is not valid! Validation failed!