Параметры Groovy findAll закрытия

Вероятно, Вы не были должны:-)

, второй самый очевидный ответ - Вы, должен использовать его, если Ваши данные не являются реляционными. Это обычно проявляется в наличии никакого простого способа описать Ваши данные как ряд столбцов. Хорошим примером является база данных, где Вы на самом деле храните печатные документы, например, путем сканирования офисной почты. Данными является просканированный PDF, и у Вас есть некоторые метаданные, которые всегда существуют (просканированный в, просканированный, тип документа) и много возможных полей метаданных, которое существует когда-то (потребительское число, число поставщика, номер заказа, приобщите к делу пока, OCRed fulltext, и т.д.). Обычно Вы не знаете заранее, какие поля метаданных Вы добавите в течение следующих двух лет. Вещи как работа CouchDB, намного более хорошая для таких данных, чем реляционные базы данных.

я также лично люблю то, что мне не нужны никакие клиентские библиотеки для CouchDB кроме клиента HTTP, который в наше время включен почти в каждый язык программирования.

, вероятно, наименее очевидный ответ: Если Вы чувствуете, что никакая боль не использует RDBMS, остаетесь с ним. Если всегда необходимо работать вокруг RDBMS, чтобы сделать задание, документ ориентировался, база данных могла бы быть достойная внимания.

Для более тщательно продуманной проверки списка эта регистрация Richard Jones .

7
задан Rao 17 May 2017 в 02:14
поделиться

1 ответ

Предполагая, что ваша коллекция представляет собой список, вы можете использовать карри для заполнения дополнительного параметра закрытия вашим объектом:

def someColl = ["foo", "bar", "foo", "baz", "foo"]

def filterClosure = { it, param -> it.getParam == param }

myColl = someColl.findAll(filterClosure.curry([getParam:'foo']))

assert ["foo", "foo", "foo"] == myColl

В приведенном выше коде filterClosure "it" будет присвоено то, что передается в curry в качестве параметра, а "param" передается элемент коллекции из findAll. Это не сработает для коллекции Map, поскольку findAll требует замыкания с одним или двумя параметрами.

7
ответ дан 7 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: