Arhn - архитектура программирования

Как сделать динамические имена ключей в файле YAML

Я хочу сделать динамические имена ключей и значения в файле YAML, чтобы сэкономить место.

Например:

KID(\d+)_AGE: &kid(params)_age
  kid(params): "18"

Итак, ожидаемый результат должен быть:

KID1_AGE: &kid1_age
  kid1: "18"

Таким образом, ключ динамический, когда я ставлю KID1_AGE, KID2_AGE, они будут подбирать этот же хэш.

Любые предложения о том, как получить это? Это в основном используется в Ruby.

Спасибо.

15.02.2013

Ответы:


1

Если вы используете Rails, файл сначала анализируется с помощью ERb.

# foo.yaml

my_random: <%= Random.rand(1..100) %>

Таким образом, вы можете сделать что-то вроде

<% 100.times do |n| %>
<%= "KID#{n}_AGE: &kid#{n}_age" %>
<% end %>

Это кажется довольно вонючим кодом. Вероятно, вам следует объяснить свою общую цель, а не то, как вы хотите ее реализовать.

15.02.2013
  • хм, я хочу взять параметр из первого ключа: KID(\d+)_AGE 15.02.2013
  • Для тестирования иногда нам нужна информация для kid1, kid2, kid3..., там много полей. Но на самом деле kid1, kid2, kid3 используют одни и те же данные для тестирования, поэтому я хочу сделать их динамическими ключами. 15.02.2013

  • 2

    Вы не можете использовать строку, которая выглядит как шаблон регулярного выражения, в качестве ключа и ожидать, что она будет действовать как регулярное выражение. YAML и Ruby так не работают. Вы также не можете использовать шаблоны регулярных выражений в качестве ключей хэша, а затем добавить строку в хэш, чтобы ключи автоматически совпадали и возвращали связанные значения. Хэши и Ruby так не работают.

    Вы можете создать ключи, соответствующие шаблону, а затем заставить Ruby пройтись по хешу, возвращенному YAML, в поисках совпадающих ключей, но это не сэкономит вам места, основываясь на том, что вы говорите о своей цели.

    Максимально используйте возможность YAML использовать псевдонимы и якоря. Они могут уменьшить размер файла YAML, но при этом предоставить доступ к нужным вам значениям после анализа файла.

    15.02.2013
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..