فهرست منبع

Réutilisation instance pour les operateur utilisant la meme class

Arthur Brandao 6 سال پیش
والد
کامیت
f9fc9a8108
1فایلهای تغییر یافته به همراه18 افزوده شده و 15 حذف شده
  1. 18 15
      src/migl/lisp/LispEval.java

+ 18 - 15
src/migl/lisp/LispEval.java

@@ -84,21 +84,24 @@ public class LispEval {
 		operators.put("set!", this.define);
 		operators.put("lambda", this.define);
 		operators.put("cons", new ConsOperator());
-		operators.put(">", new ComparatorOperator());
-		operators.put(">=", new ComparatorOperator());
-		operators.put("<", new ComparatorOperator());
-		operators.put("<=", new ComparatorOperator());
-		operators.put("=", new ComparatorOperator());
-		operators.put("min", new MinMaxOperator());
-		operators.put("max", new MinMaxOperator());
-		operators.put("cbrt", new MathOperator());
-		operators.put("ceil", new MathOperator());
-		operators.put("floor", new MathOperator());
-		operators.put("log10", new MathOperator());
-		operators.put("cos", new MathOperator());
-		operators.put("rint", new MathOperator());
-		operators.put("round", new MathOperator());
-		operators.put("signum", new MathOperator());
+		ComparatorOperator comp = new ComparatorOperator();
+		operators.put(">", comp);
+		operators.put(">=", comp);
+		operators.put("<", comp);
+		operators.put("<=", comp);
+		operators.put("=", comp);
+		MinMaxOperator minMax = new MinMaxOperator();
+		operators.put("min", minMax);
+		operators.put("max", minMax);
+		MathOperator math = new MathOperator();
+		operators.put("cbrt", math);
+		operators.put("ceil", math);
+		operators.put("floor", math);
+		operators.put("log10", math);
+		operators.put("cos", math);
+		operators.put("rint", math);
+		operators.put("round", math);
+		operators.put("signum", math);
 		operators.put("quote", (eval, op, lisp) -> {
 			if(lisp.size() != 1) {
 				throw new LispError(LispError.ERR_NUM_ARG);