Пример #1
0
        public static IObject Invoke(IObject obj, Arguments arguments, Lambda lambda)
        {
            Fields fields;

            if (obj is UserObject uo)
            {
                fields = uo.Fields;
            }
            else
            {
                fields = new Fields();
                fields.New("self");
                fields.Assign("self", obj);
            }

            if (Machine.Current.Invoke(lambda.Invokable, arguments, fields).If(out var value, out var anyException))
            {
                return(value);
            }
            else if (anyException.If(out var exception))
            {
                throw exception;
            }
            else
            {
                return(Void.Value);
            }
        }