Groovy没有方法的签名

ghg1uchk  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(198)

我正在尝试在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
}
5q4ezhmt

5q4ezhmt1#

该解决方案包括两个部分:
与@ AndrejIsomin提到的类似,删除def以使列表或变量成为全局变量解决了问题的一部分
解决方案的第二部分是需要使用this.来调用该方法,即this.capAbbreviate(dispName)

相关问题