我正在尝试在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条答案
按热度按时间5q4ezhmt1#
该解决方案包括两个部分:
与@ AndrejIsomin提到的类似,删除
def
以使列表或变量成为全局变量解决了问题的一部分解决方案的第二部分是需要使用
this.
来调用该方法,即this.capAbbreviate(dispName)