我是groovy和gradle的新手,并且想知道是否有人知道为什么我的scriplet不工作(编辑实际上它确实有效但警告仍然出现)。这部分取自build.gradle脚本,intellij突出显示了这一点并抱怨它:“无法推断出参数类型”。任何帮助都会很好:)
task hellofun << {
[silly:'billy'].each { k, v ->
println "$k=$v"
}
}
编辑:我已提交bug request通知Intellij此问题
编辑:显然这是known bug我会在修复错误后更新此内容
答案 0 :(得分:8)
如果您愿意禁用Groovy&gt;分配问题&gt;不兼容的类型分配检查,警告消失。
答案 1 :(得分:3)
在高度动态类型的语言中,例如groovy,其中名称和符号以任意方式解析。如果不运行程序,很难确定任何语句的有效性。甚至运行程序理论上也不会泄露可能改变语句的运行时有效性的所有可能的输入排列。
我赞赏intellij尝试解决这个难题,并且可能会遇到一些不正确的语法警告。
答案 2 :(得分:2)
直到修复IntelliJ错误,有一个解决方法:使用doFirst而不是&lt;&lt;。
task hellofun() {
doFirst {
[silly:'billy'].each { k, v ->
println "$k=$v"
}
}
}
感谢您提交错误:)
答案 3 :(得分:0)
对于解决方法,你应该真正打电话给&lt;&lt;&lt; (doLast)
task hellofun() {
doLast {
[silly:'billy'].each { k, v ->
println "$k=$v"
}
}
}
答案 4 :(得分:0)
在Intelij中,按Double shift(全部搜索)输入“分配问题”,然后将“分配问题:不兼容的类型分配检查”更改为“关闭”