@@ -4,9 +4,9 @@ import kotlin.collections.HashMap
44
55class Calculator (expressions : Array <String > = emptyArray()) : EvalContext {
66 private val evaluator = EvalVisitor (this )
7- private val symbol : HashMap <String , Double > = HashMap ()
8- private val constant = constant()
9- private val function = builtIn()
7+ private val variables = HashMap <String , Double >()
8+ private val constants = constant()
9+ private val functions = builtIn()
1010 private var expression = Expression ()
1111 var value: Number = expression.value
1212 get() = expression.getValue()
@@ -30,22 +30,19 @@ class Calculator(expressions: Array<String> = emptyArray()) : EvalContext {
3030 }
3131
3232 fun clear () {
33- symbol .clear()
33+ variables .clear()
3434 expression = Expression ()
3535 }
3636
37- override fun isConstant (name : String ) = constant.contains(name.toLowerCase())
38- override fun get (name : String ) = constant.getOrDefault(name.toLowerCase(), symbol.getOrDefault(name, Double .NaN ))
37+ override fun toString () = expression.toString()
38+ override fun isConstant (name : String ) = constants.contains(name.toLowerCase())
39+ override fun call (name : String , value : Double ) = functions.getOrDefault(name.toLowerCase(), { Double .NaN })(value)
40+ override fun get (name : String ) = constants.getOrDefault(name.toLowerCase(), variables.getOrDefault(name, Double .NaN ))
3941 override fun put (name : String , value : Double ) = when (isConstant(name)) {
4042 true -> Double .NaN
4143 else -> {
42- symbol [name] = value
44+ variables [name] = value
4345 value
4446 }
4547 }
46- override fun call (name : String , value : Double ) = function.getOrDefault(name.toLowerCase(), { Double .NaN })(value)
47-
48- override fun toString (): String {
49- return expression.toString()
50- }
5148}
0 commit comments