gpt4 book ai didi

dictionary - groovy 中的 bool 方法总是返回 true

转载 作者:行者123 更新时间:2023-12-02 15:34:29 25 4
gpt4 key购买 nike

这段代码有点笨,但它完全代表了问题。这两张 map 不同,但总是返回 true。为什么会这样?

class SampleTest {

private static boolean compare() {
def a = [a:'one',b:'two']
def b = [c:'three',d:'four']

if(a.size()!=b.size()) {
return false
}
a.each {
if(!a.equals(b)){
return false
}
}
return true
}
static main(args) {
println SampleTest.compare()
}

}

如果我添加额外的变量那么一切正常:

class SampleTest {

private static boolean compareArtifact() {
boolean areEqual = true
def a = [a:'one',b:'two']
def b = [c:'three',d:'four']

if(a.size()!=b.size()) {
return false
}
a.each {
if(!a.equals(b)){
areEqual = false
}
}
areEqual
}
static main(args) {
println SampleTest.compareArtifact()
}

}

最佳答案

您正在从闭包 each 中调用 return

这只会退出闭包,但不会从封闭函数返回

您可以使用find 作为提前终止循环,并检查结果是否为空

private static boolean compare() {
def a = [a:'one',b:'two']
def b = [c:'three',d:'four']

if( a.size() != b.size() ) {
return false
}
return a.find { a != b } == null
}

或者 return a == b 和你的比较方法一样

关于dictionary - groovy 中的 bool 方法总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com