AjErl.Expressions.MatchExpression.Evaluate C# (CSharp) Метод

Evaluate() публичный Метод

public Evaluate ( Context context, bool withvars = false ) : object
context Context
withvars bool
Результат object
        public object Evaluate(Context context, bool withvars = false)
        {
            object left = this.leftexpr.Evaluate(context, true);
            object right = this.rightexpr.Evaluate(context, false);

            if (!MatchUtilities.MatchObjects(left, right, context))
                throw new InvalidOperationException(string.Format("no match of right hand side value {0}", right.ToString()));

            return right;
        }

Usage Example

Пример #1
0
        public void MatchOneAtomAndTwoVariablesInTupleWithConcreteTuple()
        {
            Context context = new Context();
            Atom p = new Atom("point");
            Variable x = new Variable("X");
            Variable y = new Variable("Y");

            MatchExpression expr = new MatchExpression(new TupleExpression(new IExpression[] { new AtomExpression(p), new VariableExpression(x), new VariableExpression(y) }), new TupleExpression(new IExpression[] { new AtomExpression(new Atom("point")), new ConstantExpression(1), new ConstantExpression(2) }));

            expr.Evaluate(context);

            var result1 = context.GetValue("X");
            var result2 = context.GetValue("Y");

            Assert.IsNotNull(result1);
            Assert.AreEqual(1, result1);
            Assert.IsNotNull(result2);
            Assert.AreEqual(2, result2);
        }
All Usage Examples Of AjErl.Expressions.MatchExpression::Evaluate