【发布时间】:2022-08-06 08:49:46
【问题描述】:
我正在尝试在Groovy 中创建一个输入字符串并返回修改后的字符串的函数。我认为问题出在插件中,这是我正在使用的特定软件环境,即logic.script.Microblock。我收到的错误消息是:
No signature of method: com.controlj.addonsupport.logic.script.Microblock.capAbbreviate() is applicable for argument types: (java.lang.String) values: [OAT Dewpoint bavo].
我试过dispName = capAbbreviate(dispName.toString())、dispName = capAbbreviate(dispName) 和capAbbreviate(dispName)。
软件环境正在使用某种插件。我对 Groovy/Java 还很陌生,所以这看起来可能很简单,但它还没有在我的脑海中点击。
下面简化的代码是:
def exceptions = [\'Ac\':\'AC\',\'Oat\':\'OAT\',\'Vav\':\'VAV\']
def exceptionNonAlpha = \'(?=[^a-zA-Z])\'
def dispName
def capAbbreviate(String mbText)
{
// Iterates through \'exceptions\' map and finds abbreviations and recapitalizes them
for (hvacName in exceptions.keySet()) {
mbText = mbText.replaceAll(hvacName + exceptionNonAlpha, exceptions[hvacName])
}
return mbText
}
logic.microblocks
{
dispName = prop.\'display name\'
dispName = capAbbreviate(dispName.toString()) // also tried capAbbreviate(dispName)
println dispName
}
-
您的代码并不正确,不足以重现问题。 1. 在函数内部使用
exceptions和exceptionNonAlpha脚本变量有问题。 2.logic变量如何定义? 3.com.controlj.addonsupport.logic.script.Microblock是什么?是你的班级还是某个图书馆的班级? 4. 上面的代码——它是脚本还是某个类的一部分?考虑到这些要点,您能否更新您的问题? -
作为一个半盲的猜测,我可能会说你只是将
def capAbbreviate(String mbText)的定义更改为static def capAbbreviate(String mbText),但我不确定它会有多大帮助。如果您可以使用其他信息更新您的问题,那就太好了。我发现您从闭包中调用的方法的范围有问题。 -
@AndrejIstomin 我更新了原始问题,但
com.controlj.addonsupport.logic.script.Microblock是我正在使用的软件环境,它会自动加载该插件。我确实尝试添加static def,但返回此错误:org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script1.groovy: 158: Apparent variable \'exceptions\' was found in a static scope but doesn\'t refer to a local variable, static field or class. -
尝试将
exceptions变量声明为exceptions = [\'Ac\':\'AC\',\'Oat\':\'OAT\',\'Vav\':\'VAV\']而不是exceptions = [\'Ac\':\'AC\',\'Oat\':\'OAT\',\'Vav\':\'VAV\'](exceptionNonAlpha相同),它将使这些变量成为全局变量。 -
@AndrejIstomin 我猜你的意思是
**def** exceptions = [\'Ac\':\'AC\',\'Oat\':\'OAT\',\'Vav\':\'VAV\']到exceptions = [\'Ac\':\'AC\',\'Oat\':\'OAT\',\'Vav\':\'VAV\']。我正在尝试确定如何使dispName成为全局,因为这可能是问题的一部分。
标签: function class methods groovy