调用groovy方法的区别

时间:2015-12-13 12:20:13

标签: groovy

方法

def UserRole (User u, Role r, boolean flush = false) {
 ...
}

可以像UserRole.create(u, r, true)

一样调用

但错误地使用UserRole.create(u, r, flush: true)调用它会导致

  

没有方法签名:UserRole.create()适用于参数   types:(java.util.LinkedHashMap ....

我知道这是一个错误的方法来调用它,但我试图理解为什么会出现LinkedHashMap错误,以及GORM内置保存方法是如何工作的...因为调用User.save(flush: true)有效精细。

1 个答案:

答案 0 :(得分:0)

您有一个错误,因为flush : true被解释为具有一个键值元素的Map。 Groovy不支持方法中的命名参数。

  

因为调用User.save(flush:true)可以正常工作

我没有使用Grails,但save()似乎是GORM框架中的默认内置方法。如果检查方法实现,您很可能会在方法参数中看到它接受Map