var linearEquation = new LinearEquation();
linearEquation.setA(10);
linearEquation.setB(-50);
console.log(linearEquation.solve());
Итак, при
10 * x - 50 = 0
код выводит что искомое будет равно 5. Вроде бы все правильно. Смотрим в пример. Итого у нас есть класс с двумя полями, геттерами-сеттерами, функцией solve и функцией _validateArgument. Как можно заметить функция solve возвращает массив. Это сделано для того, чтобы в дальнейшем можно было написать функцию для квадратных уравнений, которая будет возвращать массив из двух элементов. Кроме этого, функция solve исключает деление на 0, и возвращает массив со значением NaN (not a number), в этом случае - неопределенность. Функция _validateArgument имеет нижнее подчеркивание вначале. Такое нижнее подчеркивание дает знать, что эта функция сделана для служебного пользования, что-то типа модификатора доступа protected. Говорят, что двойное нижнее подчеркивание значит private, но в своей практике двойное нижнее подчеркивание в названиях функций я никогда не видел.
Следующей задачей будет написание функции, с входным аргументом в виде строки. В этой строке будет записано линейное уравнение, и эта процедура должна будет посчитать его.
19.05.2018, 12:12
Degradator
Итак, пишем парсер выражения. Он должен разобрать первое попавшееся выражение, будь то число или неизвестное, и сохранить курсор.
function Variable () {
this.value = null;
}
Variable.prototype.getValue = function () {
return this.value;
};
Variable.prototype.setValue = function (value) {
return this.value = value;
};
Отлично работает. Теперь надо написать класс, который будет угадывать какое математическое действие следует выбрать для дальнейших вычислений
25.05.2018, 13:15
Degradator
В предыдущем посте я отредактировал конструктор VariableParser, теперь он хочет принимать курсор. Это сделано для дальнейшего парсинга выражения.
Раздумываю над тем, как продолжить вычиления, прихожу к выводу, что надо делать какую-то chain конструкцию.
Хотелось бы чтобы было примерно так