Как говорили другие, это новый синтаксис для создания функций.
Однако этот вид функций отличается от обычных:
this
стоимость. Как объяснено , spec , An ArrowFunction не определяет локальные привязки для arguments
, super
, this
или new.target
. Любая ссылка на arguments
, super
, this
или new.target
в ArrowFunction должна быть разрешена к привязке в лексически закрывающей среде. Обычно это будет функциональная среда сразу входящей функции. Хотя функция ArrowFunction может содержать ссылки на super
, функциональный объект, созданный на шаге 4, не превращается в метод, выполняя MakeMethod . Функция ArrowFunction , которая ссылается на super
, всегда содержится внутри функции [ Arrow [], а необходимое для реализации super
доступное через область который захватывается функциональным объектом ArrowFunction . var f = a => a;
f(123); // 123
new f(); // TypeError: f is not a constructor
У вас есть два разумных подхода, которые вы можете попробовать здесь, чтобы уменьшить повторение.
У вас может быть отдельный каталог 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
Мое решение состояло в том, чтобы создавать роли для общего материала и добавлять их в зависимости.
Например, ваша игра будет выглядеть так
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/
.