Используется обратная польская нотация. Если символ не отмечен, это означает, что функция ещё не реализована, но планируется к реализации в будущем.
В процессе реализации были использованы некоторые другие ресурсы, которые здесь не перечислены.
var context = new CalContext(); //Добавление значения в стек — переменная context.putData("$a",5); //Добавление значения в стек — переменная context.putData("PI",3); //Добавление значения в стек — функция без параметров context.putData("fun0",function(){ return 1000;}); //Добавление значения в стек — функция с одним параметром context.putData("fun1",function(a){ return 10 * a;}); //Добавление значения в стек — функция с двумя параметрами context.putData("fun2",function(a,b){ return 10 * a + b;}); //Добавление значения в стек — метод объекта (если используется метод или атрибут объекта window браузера, необходимо передать window в качестве контекста) var t = { year: 28, fun: function(a) { return a + this.year; } }; context.putData("fun3",t.fun,t);//Здесь необходимо передать объект в качестве обратного вызова //Добавление значения в стек — объект context.putData("people",{ age: 28, bat: 3, fun1: function(){ return this.age + 2; }, fun2: function(a){ return this.age + 10 * a; }, fun3: function(a,b){ return this.age + 10 * a + b; }, skill: { lang : function(a){ return a + this.bat; } } }); //Получение значения //var result = context.calc(expr); //Ниже приведены примеры тестов context.assertEqual("40+8*2",56); context.assertEqual("40*8+2",322); context.assertEqual("40/8+2",7); context.assertEqual("40+8/2",44); context.assertEqual("(40+8)/2",24); context.assertEqual("40*(8-2)",240); context.assertEqual("10%3 + 1",2); context.assertEqual("0.1 + 1 + 0.3",1.4); context.assertEqual("0.1 *10 + 6.3",7.3); context.assertEqual("$a + 5",10); context.assertEqual("$a + fun0()",1005); context.assertEqual("$a + fun0() + 100",1105); context.assertEqual("$a + fun1(1)",15); context.assertEqual("$a + fun2(2,1)",26); context.assertEqual("$a + fun2(3+7,3)",108); context.assertEqual("$a + fun2(fun1(2),3) + 20",228); context.assertEqual("11 + people.age / 2 + 6",31); context.assertEqual("11 + people.age / 2 + fun1(1)",35); context.assertEqual("11 + fun1(people.age / 2)/2 + 1",82); context.assertEqual("$a + fun3(2) + people.fun1(1)",65); context.assertEqual("$a + fun3(2) + people.skill.lang(1)",39); //10 + (28+2) + 106 * 2 + 24 = 276 context.assertEqual("10 + fun3(2) + people.skill.lang(fun2(3+7,3)) * 2 + 24",276); context.assertEqual("PI * 2 + 3",9);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )