Как извлечь значения из этого сложного Puppet Struct - PullRequest
0 голосов
/ 14 мая 2019

У меня есть эта структура данных в марионетке:

Struct[
    'ssh_keys' => Hash[
      String,
      Struct[
        'path'    => String,
        'content' => String,
      ]
    ]
  ] $myStructure

И я хотел бы извлечь все значения 'path' в массив.

Я дошел до отображения внутренней структуры, используя

$testvariable = $myStructure['ssh_keys'].map |$items| { $items[1] }

Но немного отстой, любая помощь будет высоко оценена.

1 Ответ

4 голосов
/ 14 мая 2019

Непонятно, от чего вы зависли, так как вы действительно большую часть пути к решению, которое должно работать. Однако для хэшей я обычно предпочитаю форму функции map(), в которой лямбда принимает два параметра, отдельный ключ и значение. Это будет читать более четко в этом случае:

$testvariable = $myStructure['ssh_keys'].map |$unused, $ssh_key| { $ssh_key['path'] }

Но вы также должны иметь возможность в исходном коде индексировать $items[1] как хеш (Struct): $items[1]['path'].

Вы также можете использовать функцию dig(), если вы не можете соблюдать комбинацию индексации массива и хеша в приведенном выше примере: $items.dig(1, 'path').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...