调用groovy方法的区别

调用groovy方法的区别,groovy,Groovy,方法 可以这样调用UserRole.create(u,r,true) 但是错误地用UserRole.create调用它(u,r,flush:true)会导致 没有方法的签名:UserRole.create()适用于参数 类型:(java.util.LinkedHashMap…) 我知道调用它是一种错误的方式,但我正在试图理解为什么会出现LinkedHashMap错误,以及GORM内置的save方法是如何工作的……因为调用User.save(flush:true)效果很好。您有一个错误,因为flu

方法

可以这样调用
UserRole.create(u,r,true)

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

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


我知道调用它是一种错误的方式,但我正在试图理解为什么会出现
LinkedHashMap
错误,以及GORM内置的save方法是如何工作的……因为调用
User.save(flush:true)
效果很好。

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

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

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

您的意思是“调用像
新用户角色(u,r,true)
-或者它是
类用户角色{static void create…}
?还要注意,groovy没有命名参数(如python)。
flush:true
只是
[flush:true]
的缩写,这是传递一个映射。
def UserRole (User u, Role r, boolean flush = false) {
 ...
}