2014-12-19 115 views
-1

我试图将默认值指定为Map。这是如何完成的?方法的默认值

static def AddOrder(String key, Map order = [ 
               id: '', 
               campaign_id: '', 
               email_id: '', 
               email: '', 
               total: 0.0d, 
               order_date: '', 
               shipping: 0.0d, 
               tax: 0.0d, 
               store_id: '', 
               store_name: '', 
               items: [ 
                  line_num: 0, 
                  product_id: 0, 
                  sku: '', 
                  product_name: '', 
                  category_id: 0, 
                  qty: 0.0d, 
                  cost: 0.0d 
                 ] 
              ]){ 
    contactMC(key, action, order) 
} 

回答

1

你为什么不简单地测试它?一个很短的程序会告诉你,这就是默认地图参数的工作原理:

def testMethod(Map map = [ foo: 'bar' ]) { 
    return map.foo 
} 

println testMethod() //outputs bar 
println testMethod([foo:'baz']) //outputs baz 
+0

看起来有点笨重。我正在寻找另一种方式。 – devanon 2014-12-19 08:24:00

+1

您可以随时在其他地方定义默认地图,使用默认的空地图('静态def AddOrder(String key,Map order = [:])'),并使方法的第一行为'order = order?:defaultOrder' (其中'defaultOrder'是你在某处定义的默认映射)。如果你需要这样的话,它也可以重复使用。 – 2014-12-19 08:27:09

+0

非常好。谢谢。 – devanon 2014-12-19 08:31:04