Есть такое задание:
Напиши функцию создания генератора sequence(start, step)
. Она при вызове возвращает другую функцию-генератор, которая при каждом вызове дает число на 1 больше, и так до бесконечности. Начальное число, с которого начинать отсчет, и шаг, задается при создании генератора. Шаг можно не указывать, тогда он будет равен одному. Начальное значение по умолчанию равно 0. Генераторов можно создать сколько угодно.
Даны тесты для проверки:
var generator = sequence(10, 3);
console.log(generator()); // 10
console.log(generator()); // 13
Я создал обычный генератор:
function sequence() {
let callNumber = 0;
return function () {
return ++callNumber;
}
}
Половина дела сделана:
function sequence() {
let callNumber = 0;
return function () {
return ++callNumber;
}
}
Теперь согласно заданию нужно добавить два параметра
function sequence(start=0, step=1) {
let callNumber = 0;
return function () {
return ++callNumber;
}
}
для step, значение по умолчанию 1
, для start = 0
Осталось только их использовать:
function sequence(start = 0, step = 1) {
let callNumber = start;
return function() {
var returnValue = callNumber; // значение для вывода
callNumber += step; // готовимся к следующему шагу
return returnValue;
}
}
var generator = sequence(10, 3);
console.log(generator()); // 10
console.log(generator()); // 13
var generator2 = sequence();
console.log(generator2()); // 0
console.log(generator2()); // 1
Вариант с настоящим генератором:
function sequence(start = 0, step = 1) {
function* gen(start, step) {
while (true) { // бесконечно генерируем значения
yield start; // выдаем значение
start += step; // готовимся к следующему шагу
}
}
var generator = gen(start, step); // создаем генератор с нужными параметрами
return function() {
return generator.next().value; // получаем значение из генератора
}
}
var generator = sequence(10, 3);
console.log(generator()); // 10
console.log(generator()); // 13
var generator2 = sequence();
console.log(generator2()); // 0
console.log(generator2()); // 1
Моё решение:
function sequence(start, step) {
start = start || 0;
step = step || 1;
start -= step;
return function() {
return start += step;
}
}
var generator = sequence(2, 3);
console.log(generator());
console.log(generator());
console.log(generator());
Замыкания нету, зато есть собственно генератор)
function* sequence(start = 0, step = 1) {
start -= step;
while(true){
yield start += step;
}
}
var generator = sequence(2, 3);
console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().value);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Переменная $group содержит массив, в котором нужно вывести последнюю строку без запятойДелаю это так:
Добрый день, пишу парсер xlsxПроблема вот в чем, вытащил все данные из файла, теперь нужно по ним отыскать данные в бд
ак настроить вывод логов и ошибок php в терминал во время работы встроенного веб сервера php -S ? OS: ubuntu 1604