Библиотеки внедрения зависимости Ruby

Вы можете создать расчет соединения. Выделенный раскрывающийся список показывает, где это можно найти:

enter image description here

Пока формат идентификатора элемента в [Элемент описания] имеет некоторые шаблон, он может быть извлечен с помощью регулярных выражений. Как вы упоминаете в своем вопросе, один из способов, которым может быть представлен идентификатор, - после «TO =», и похоже, что он заканчивается перед «_». Следующее вычисляемое регулярное выражение поле будет тянуть строку между ними:

REGEXP_EXTRACT([Member Desc],"([^TO=]*)(?=_)")

enter image description here

Результат должен правильно объединить два источника данных: [ 1112]

enter image description here

Выше приведен набросок, который, я надеюсь, укажет вам правильный путь. Я понимаю, что может быть несколько разных методов, в которых [ID члена] представляет себя, поэтому я не смогу точно определить регулярное выражение, но если вообще есть какой-либо шаблон, тогда приведенный выше формат должен работать. (т. е. даже если единственный шаблон состоит в том, что [ID участника] состоит из трех букв, за которыми следуют четыре цифры - или он всегда начинается с A и заканчивается чем-то другим - и т. д.)

Regex также должен работать лучше, чем Функция содержит (), но имейте в виду, что функция должна искать через каждую строку в каждой строке, чтобы сделать соединение.

Редактировать в ответ на комментарий:

Чтобы добавить несколько условий, попробуйте следующий метод:

IF LEN(REGEXP_EXTRACT([Member Desc],"([^FROM=]*)(?=,)")) > 0
THEN REGEXP_EXTRACT([Member Desc],"([^FROM=]*)(?=,)")
ELSEIF LEN(REGEXP_EXTRACT([Member Desc],"([^TO=]*)(?=,)")) > 0
THEN REGEXP_EXTRACT([Member Desc],"([^TO=]*)(?=,)")
ELSEIF [...Put as many of these as might match your pattern]
THEN [...Put as many of these as might match your pattern]
END

По сути, расчет идет вниз список и пробовать каждую возможность. Я немного изменил ваш, чтобы посмотреть на длину (LEN ()) возвращаемого значения, которое должно сравнительно быстро сравниваться, так как это целое число. Поскольку этот расчет повторяет каждый ELSEIF и находит совпадение, он прекращает итерацию по списку - поэтому важно поместить наиболее вероятное совпадение вверху. Результатом вычисляемого поля должен быть идентификатор участника. Если совпадения не найдено, оператор ELSE на самом деле не нужен, потому что внутреннее соединение автоматически исключит его.

Редактировать в ответ на комментарий: Спасибо. Я вижу ваши рекомендации.

25
задан newtonapple 12 November 2008 в 09:58
поделиться

2 ответа

Джеймис Бак, который написал «Copland and Needle» , опубликовал здесь об «Игле», внедрении зависимостей и их полезности в мире Ruby.

Это долго, но стоит прочесть, но в случае, если вам нужен единственный параграф, наиболее релевантный вашему вопросу, я бы предложил этот, непосредственно перед концом:

DI-фреймворки не нужны. В более жестких условиях они имеют ценность. В гибких средах, таких как Ruby, не так много. Сами образцы могут все еще быть применимыми, но остерегайтесь попадания в ловушку мышления, вам нужен специальный инструмент для всего. Ruby - это Play-Doh, помни! Давайте так держать.

HTH

46
ответ дан 28 November 2019 в 20:41
поделиться

Вот еще один IoC http://alexeypetrushin.github.com/micon

Я использовал его в качестве основного компонента моей веб-инфраструктуры (не Rails). работает здесь - http://ruby-lang.info (этот сайт работает на нем). И это сэкономило мне много времени и кода, поэтому я лично считаю IoC очень полезным (в некоторых ситуациях).

DI рамки не нужны. В более жестких условиях они имеют ценность. В гибких средах, таких как Ruby, не так много. Сами образцы могут все еще быть применимыми, но остерегайтесь попадания в ловушку мышления, вам нужен специальный инструмент для всего. Ruby - это Play-Doh, помни! Давайте так держать.

Я смотрел разговоры о Джемисе Баке, и я с ним согласен и не согласен, вот почему 3Fh

1
ответ дан 28 November 2019 в 20:41
поделиться
Другие вопросы по тегам:

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