@GizzaProger

Как создать функцию, которая генерирует другую функцию?

Я создаю график случайного полинома и мне надо генерировать этот случайный полином. Я решил создать такую функцию
let getRandomPolynom = () => x => this.getRandomZ() * x^4 + this.getRandomZ() * x^3 - this.getRandomZ() * x^2 + -this.getRandomZ() * x + 10

Я ожидал, что данная функция бедует возвращать мне другую функцию, которая является случайным полиномом, но в итоге я получаю это при вызове функции getRandomPolynom
x => this.getRandomZ() * x^4 + this.getRandomZ() * x^3 - this.getRandomZ() * x^2 + -this.getRandomZ() * x + 10
this.getRandomZ() не вычисляется. Почему?
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
this.getRandomZ() не вычисляется

А с чего бы ему вычисляться? Вы же не вызвали полученную функцию. Вызовите - вычислится. Правда, результаты при каждом вызове будут разными. Потому что вызовы getRandomZ должны находится непосредственно в getRandomPolynom, а не в той функции, что он возвращает. Вызвали сколько надо раз, результаты сохранили, в возвращаемой функции подставляете:

const getRandomPolynom = () => {
  const [ A, B, C, D ] = Array.from({ length: 4 }, this.getRandomZ);
  return x => A * x ** 4 + B * x ** 3 - C * x ** 2 - D * x + 10;
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы