Создание Арифметические задач Runner

голоса
0

Мне было поручено создать Арифметик Task Runner как часть моего назначения.

До сегодняшнего дня я никогда не использовал NodeJS или даже терминал для выполнения сценария.

Я работал над этим в течение последних 5 часов и до сих пор не повезло. Я избегал приходить сюда и спрашивать, как я хотел бы, чтобы понять это для себя, тем не менее, я поддался отчаянно нуждающихся в помощи.

Это код, который я до сих пор:

class ArithmeticTaskRunner {
    static set taskCount(counter) {
        throw new('This is a readOnly accessor, the value is ${value}');
    }

    add(y) {
        this.y = y || 0
        console.log(y)
        }

         minus(x) {
            this.x = Math.abs(this.y) * -1;
            console.log(this.x);
        };

    multiply(z) {
        this.z = z * this.x;
        console.log(this.z)
    }

    execute(startValue) {
       this.startValue = startValue + this.y
       this.y = this.startValue
        console.log(this.startValue)
        this.startValue = this.minus
        console.log(this.startValue)
        this.startValue = this.multiply(this.startValue)
        console.log(this.startValue)
    }
}

tasks = [
    function() { minus()},
    function() { multiply(z)},  
    function() { add(x)},
    function() { execute(x)}    
]

Это далеко не идеален, но это 80% -90% близка к завершению.

Это задача, которую я был дан:

You should implement a class called ArithmeticTaskRunner with the following:
- An instance variable named tasks which is initialised to an empty array upon
creation.
- A method named addNegationTask which adds an anonymous function to the
tasks array. This anonymous function should take one argument, x, and return the
negation, -x.
- A method named addAdditionTask which takes a single argument y, and adds
an anonymous function to the tasks array. This anonymous function should take
one argument, x, and return the result x + y.
- A method named addMultiplicationTask which takes a single argument y,
and adds an anonymous function to the tasks array. This anonymous function
should take one argument, x, and return the result x * y.
- A read-only accessor named taskCount which returns the number of queued tasks.
- A method named execute, which takes a single argument named startValue.
If omitted, startValue defaults to zero. Starting at startValue, this method should iterate over the tasks array executing each function on the current value. It then returns the resulting number after all arithmetic operations have been executed.

Я был бы признателен за любую помощь, я мог бы получить.

Вопросы у меня следующие: Метод выполнения (пытается сделать startValue, после того, отрицательный), метод умножения и тот факт , что я не могу назвать метод сложения дважды без заменяющего значения. Примеры программы полностью рабочей показали , я должен предусматривать метод можно вызывать несколько раз , не отменяя предыдущее значение.

Я знаю, что есть правило, где это один вопрос за вопросом, я признаю, что. Но если кто-то может помочь мне с каким-либо из вопросов, которые я действительно буду благодарен и буду компенсировать человек за их усилие.

Спасибо.

Правка - Это пример обоих ожидаемых входов / выходов

> let taskRunner = new ArithmeticTaskRunner()
undefined
> taskRunner.addAdditionTask(2)
undefined
> taskRunner.addMultiplicationTask(4)
undefined
> taskRunner.addAdditionTask(10)
undefined
> taskRunner.execute(2)
26
> taskRunner.execute(-2)
10
Задан 07/11/2018 в 20:06
источник пользователем
На других языках...                            


1 ответов

голоса
1

Я не хочу , чтобы обеспечить весь ответ , потому что это назначение для вас, но вот код , который может помочь вам. Это начинается с 5затем звонками , doubleItа затем вызывает addOneприйти 11.

Она делает это путем создания массива функций, каждая из которых выполняет простую задачу и возвращает результат его ввода измененного каким-либо образом.

Затем он создает функцию с именем , executeкоторая использует Array.reduce для вызова первой функции в массиве с заданным начальным значением, а затем повторно вызывает каждую функцию в массиве на результате. Проверьте документацию для Array.reduce , если вы смущены о том , как это работает.

doubleIt = x => x * 2;
addOne = x => x + 1;
tasks = [doubleIt, addOne];
execute = (initial) => tasks.reduce((x,fn) => fn(x), initial)
document.write(execute(5))

Подсказка # 2

class ArithmeticTaskRunner {
  constructor() {
    this.tasks = [];
  }
  
  addAdditionTask(arg) {
    this.tasks.push(x => x + arg);
  }
    
  addMultiplicationTask(arg) {
    this.tasks.push(x => x * arg);
  }
  
  execute(startValue) {
    return this.tasks.reduce((x, fn) => fn(x), startValue);
  }
}

let taskRunner = new ArithmeticTaskRunner()
taskRunner.addAdditionTask(2)
taskRunner.addMultiplicationTask(4)
taskRunner.addAdditionTask(10)
document.write(taskRunner.execute(2));
document.write(', ');
document.write(taskRunner.execute(-2));

Ответил 07/11/2018 в 20:33
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more