Можно ли загрузить файл vars & ldquo; main.yml & rdquo; от одной роли в другую роль динамически? [Дубликат]

Это функции стрелок

Также известны как функции Fat Arrow. Они представляют собой чистый и понятный способ записи функциональных выражений, например. function() {}.

Функции стрелок могут удалить необходимость function, return и {} при определении функций. [1]

var queue        = ['Dave', 'Sarah', 'Sharon'],
    nextCustomer = () => queue[0];

console.log(nextCustomer()); // 'Dave'

Пример: без параметров

var queue        = ['Dave', 'Sarah', 'Sharon'],
    nextCustomer = () => queue[0];

console.log(nextCustomer()); // 'Dave'

Если в одной и той же функции со стрелками необходимо выполнить несколько операторов, в этом примере вам нужно обернуть queue[0] в скобках кромки {}. В этом случае оператор возврата не может быть опущен.

Пример с 1 параметром

var queue       = ['Dave', 'Sarah', 'Sharon'],
    addCustomer = name => { queue.push(name) }

addCustomer('Toby');

console.log(queue); // ['Dave', 'Sarah', 'Sharon', 'Toby']

Вы можете опустить {} из приведенного выше.

Когда имеется один параметр, скобки () вокруг параметра могут быть опущены.

Пример с несколькими параметрами

var addition = (x, y) => x + y

console.log(addition(1, 5)); // 6

Полезный пример

var fruits = [
    {name: 'Apple', price: 2},
    {name: 'Bananna', price: 3},
    {name: 'Pear', price: 1}
];

Если бы мы хотели получить цену каждого плода в одном массиве, в ES5 мы могли бы сделать:

fruits.map(function(fruit) {
    return fruit.price;
}); // [2, 3, 1]

В ES6 с новыми функциями стрелок мы можем сделать это более кратким:

fruits.map(fruit => fruit.price); // [2, 3, 1]

Здесь можно найти дополнительную информацию о функциях стрелок здесь .

Совместимость браузера

  • IE: не поддерживается, но
  • Edge: 12+ (все версии)
  • Firefox: 22 +
  • Chrome: 45 +
  • Safari: 10 +
  • iOS Safari: 10.2 +
  • Android Browser: 56 +

Дополнительную актуальную информацию можно найти в совместимости с браузером здесь

8
задан ydaetskcoR 15 December 2015 в 14:42
поделиться

2 ответа

У вас есть два разумных подхода, которые вы можете попробовать здесь, чтобы уменьшить повторение.

У вас может быть отдельный каталог shared-files, который будет находиться в качестве родного брата в ваших папках ролей следующим образом:

play.yml
roles/
  web/
    tasks/
    files/
      other-multiple-files
  role-2/
    tasks/
    files/
      other-multiple-files
  role-3/
    tasks/
  role-4/
    tasks/
  shared-files/
    common-1
    common-2

Затем вы должны ссылаться на это в задачах с относительным расположением файлов, из которых будет папка role / files:

- name: copy common-1
  copy:
    src: ../../common-1
    dest: /path/to/dest/common-1

- name: copy role specific file
    src: other-multiple-files
    dest: /path/to/dest/other-multiple-files

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

play.yml
roles/
  web/
    tasks/
    files/
      common-1 -> ../../common-1
      common-2 -> ../../common-2
      other-multiple-files
  role-2/
    tasks/
    files/
      common-1 -> ../../common-1
      common-2 -> ../../common-2
      other-multiple-files
  role-3/
    tasks/
    files/
      common-2 -> ../../common-2
  role-4/
    tasks/
    files/
      common-1 -> ../../common-1
  shared-files/
    common-1
    common-2

И вы можете ссылаться на файл так, как если бы он был в каталоге role / files напрямую:

- name: copy common-1
  copy:
    src: common-1
    dest: /path/to/dest/common-1

- name: copy role specific file
    src: other-multiple-files
    dest: /path/to/dest/other-multiple-files
13
ответ дан ydaetskcoR 20 August 2018 в 10:42
поделиться
  • 1
    Мне очень понравился символический подход ссылок, он сделает роли свободными от путей, и путь будет установлен только один раз в символической ссылке. – Nasr 15 December 2015 в 15:18
  • 2
    Я использую символические ссылки в своих ролях, чтобы обмениваться файлами, шаблонами и т. Д. Среди них. git отлично справляется с символическими ссылками, поэтому относительные символические ссылки между различными файлами & amp; шаблоны каталогов это кусок пирога. – Bruce P 15 December 2015 в 16:00

Мое решение состояло в том, чтобы создавать роли для общего материала и добавлять их в зависимости.

Например, ваша игра будет выглядеть так

play.yml
roles/
  common-1/
    files/
      common-1
  common-2/
    files/
      common-2
  web/
    meta/
      common-1
      common-2
    tasks/
    files/
      other-multiple-files
  role-2/
    meta/
      common-1
      common-2
    tasks/
    files/
      other-multiple-files
  role-3/
    meta/
      common-2
    tasks/
  role-4/
    meta/
      common-1
    tasks/

, поэтому roles/common-1 и roles/common-2 - это роли, которые просто разворачивают файлы, и все роли, которые в них нуждаются, имеют в качестве зависимостей папку meta/.

8
ответ дан user2599522 20 August 2018 в 10:42
поделиться
Другие вопросы по тегам:

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