Также известны как функции 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]
в скобках кромки {}
. В этом случае оператор возврата не может быть опущен.
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]
Здесь можно найти дополнительную информацию о функциях стрелок здесь .
Дополнительную актуальную информацию можно найти в совместимости с браузером здесь
У вас есть два разумных подхода, которые вы можете попробовать здесь, чтобы уменьшить повторение.
У вас может быть отдельный каталог 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/
.