我是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 . 如果您阅读已有的代码,它还可以更轻松地读取代码或查看内容
1 回答
这个方法的问题不是变量的类型,而是每个 Map
在一个时髦的 Map 中,每个都有两个签名 . 一个接收Map.Entry参数和其他接收键和值
例:
每个的结果将是:
或者可能是这样的
第二个结果与第一个结果相同 .
如果你想传递给myMethod的两个特定参数,那么将它们传递到每个参数之外:
我不完全理解你想要的东西..我希望你帮助你做代码 .