如何在Groovy中减去Integers并保留前导零?

Ant*_*t's 2 groovy

我有一个代码:

def a = 2111 - 1112
//which calculates a as 999.
Run Code Online (Sandbox Code Playgroud)

但是在上面的结果中我需要a成为0999,即我需要前导零a.我怎么能这样做?

Eri*_*lin 5

似乎应该有一个很多Groovy-er解决方案,但这是我能想到的最好的:

Integer.metaClass.sub = {
    def padTo = Math.max(delegate.toString().length(), it.toString().length())
    return (delegate - it).toString().padLeft(padTo, '0')
}

println 2111.sub(1112)
Run Code Online (Sandbox Code Playgroud)

我怀疑你是否想要真正改变" - "运算符的行为,但如果你这样做,我认为如果改变了String的metaClass.subtract并使用"2111" - "1112"会更好

  • @eric +1.使用默认参数和传播运算符发布了您的变体:-) (2认同)