我是Groovy的新手,所以我对该语言的运行时绑定,类型化和非类型化属性感到困惑 . 我个人更喜欢声明类型 .
但是,我有一个问题 .
我有一个小方法,从 Map ,输入,等等,我知道数字的变量 . 假设我不知道初始类型是什么(它在代码深处或者来自外部源),另一种是它是一个数字 . 现在我有一个方法,它接受其中两个参数,我必须对它们进行模运算 . 因为它们可能是十进制的,所以我使用BigDecimal的其余部分编写了一个小方法,以强制执行我在方法签名上使用类型BigDecimal的类型 .
def callerMethod(Map map) {
...
map.each{
calledMethod(it.val1, it.val2)
...
}
...
}
def calledMethod(BigDecimal val1, BigDecimal val2) {
...
vl1.remainder(val2)
...
}
它是否正确?如果传入的参数是Integer(大部分时候如果我正确地理解了基元的基元),它是否会被隐式转换或变成BigDecimal?
这在Groovy中如何工作 .
我仍然认为,因为我可以选择使用类型,我想使用它们而不是声明一切def . 如果您阅读已有的代码,它还可以更轻松地读取代码或查看内容