2015-12-13 3 views
0

МетодРазница в вызове Groovy Методы

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

можно назвать как этот UserRole.create(u, r, true)

но ошибочно называя его UserRole.create(u, r, flush: true) результатами в

Нет подписи метода: UserRole.create() применимо для аргумента типов: (java.util.LinkedHashMap ....

Я знаю, что это неправильный способ назвать это, но я пытаюсь понять, почему возникает ошибка LinkedHashMap, а также как работает встроенный метод сохранения GORM ... потому что вызов User.save(flush: true) работает нормально.

+0

Вы имеете в виду «называемый« новым UserRole (u, r, true) »- или это« класс UserRole {static void create ...} »? Также обратите внимание, что groovy не имеет именованных параметров (например, python). 'flush: true' является просто коротким для' [flush: true] ', и это передает карту. – cfrick

ответ

0

У вас есть ошибка, потому что flush : true интерпретируется как карта с одним элементом значения ключа. Groovy не поддерживает именованные параметры в методах.

, потому что вызов User.save (вровень: правда) отлично

Я не работал с Grails работает, но save(), кажется, встроенный по умолчанию метод в рамках Горм. Если вы проверите реализацию метода, вы, скорее всего, увидите, что он принимает Map в параметрах метода.

Смежные вопросы