提问人:Azm 提问时间:5/6/2023 更新时间:5/7/2023 访问量:33
为什么我不能在 groovy 闭包中使用字符串方法?- 没有方法调用的候选者
Why I cannot use string methods inside groovy closure? - no candidate for method call
问:
我有简单的哈希图并想操作它,但 IDE 无法识别这些方法。对 Groovy 完全陌生,所以不确定出了什么问题。
def percentages = [
"x1" : "20%",
"x2" : "30%",
"x3" : "0.4",
"x4" : "50%",
"x5" : "0.6"]
percentages.each {
val ->
if(val[2].endsWith("%")) {
val[2].deleteCharAt(val.length()-1)
println val
}
}
答:
1赞
Andrej Istomin
5/6/2023
#1
当你这样做时,你遍历 map 和 每个元素都是 .这可能是您需要的:percentages.each
java.util.Map.Entry
import java.util.Map.Entry
def percentages = [
"x1": "20%",
"x2": "30%",
"x3": "0.4",
"x4": "50%",
"x5": "0.6"]
percentages.each { Entry<String, String> val ->
if (val.value.endsWith("%")) {
val.value = val.value.substring(0, val.value.length() - 1)
println val
}
}
甚至更紧凑,正如@daggett建议的那样:
def percentages = [
"x1": "20%",
"x2": "30%",
"x3": "0.4",
"x4": "50%",
"x5": "0.6"]
percentages.each {k, v ->
if (v.endsWith("%")) {
percentages[k] = v.substring(0, v.length() - 1)
println percentages[k]
}
}
评论
1赞
Azm
5/6/2023
没错,脸掌。谢谢!
2赞
daggett
5/7/2023
或percentages.each{k,v-> ...}
评论