AjErl.Expressions.ListExpression.Evaluate C# (CSharp) Method

Evaluate() public method

public Evaluate ( Context context, bool withvars = false ) : object
context Context
withvars bool
return object
        public object Evaluate(Context context, bool withvars = false)
        {
            IList<object> elements = new List<object>();

            foreach (var expr in this.expressions)
                elements.Add(expr.Evaluate(context, withvars));

            List tail = null;

            if (this.tailexpression != null)
            {
                object tailvalue = this.tailexpression.Evaluate(context, withvars);

                if (tailvalue is Variable)
                    return List.MakeList(elements, (Variable)tailvalue);

                tail = (List)tailvalue;
            }

            if (elements.Count == 0 && tail == null)
                return EmptyList.Instance;

            return List.MakeList(elements, tail);
        }

Usage Example

Ejemplo n.º 1
0
        public void CreateListWithVariableAsTail()
        {
            Context context = new Context();
            var expr = new ListExpression(new IExpression[] { new ConstantExpression(1), new ConstantExpression(2) }, new VariableExpression(new Variable("Tail")));

            var result = expr.Evaluate(context, true);

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(List));
            Assert.AreEqual("[1,2|Tail]", result.ToString());
        }
All Usage Examples Of AjErl.Expressions.ListExpression::Evaluate