是否可以将地图展开为方法参数列表
在Python中,它是可能的,例如。 Expanding tuples into arguments
我有def map = ['a':1, 'b':2]
和方法def m(a,b)
我想写像m(*map)
答案 0 :(得分:10)
spread operator(*)用于将列表拆分为单个元素。这可以用于调用具有多个参数的方法,然后将列表分散到参数的值中。
列表(Groovy中的列表与Python中的元组最近相关 1,2 ):
list = [1, 2]
m(*list)
地图:
map = [a: 1, b: 2]
paramsList = map.values().toList()
m(*paramsList)
一个重点是你按位置传递参数。
答案 1 :(得分:1)
我目前能想到的最好的是:
@groovy.transform.Canonical
class X {
def a
def b
def fn( a, b ) {
println "Called with $a $b"
}
}
def map = [ a:1, b:2 ]
def x = new X( map.values().toList() )
x.fn( map.values().toList() )
但是,在调用函数/构造函数时,它会考虑映射的顺序,而不考虑键的名称。
您可能想要添加一个采用Map的函数/构造函数,并以这种方式执行
答案 2 :(得分:-2)
mmap = { 'a':1, 'b':2 }
def m( a, b ):
return a+b
print m( **mmap )
30
3