예제 #1
0
            /// <summary>
            /// The creator method.
            /// </summary>
            /// <param name="args">A sequence of elements.</param>
            /// <returns>A new list.</returns>
            protected override object doInvoke(object args)
            {
                IArraySeq ias = args as IArraySeq;

                if (ias != null)
                {
                    object[]        argsarray = (object[])ias.ToArray();
                    IPersistentList ret       = EMPTY;
                    for (int i = argsarray.Length - 1; i >= ias.index(); i--)
                    {
                        ret = (IPersistentList)ret.cons(argsarray[i]);
                    }
                    return(ret);
                }

                List <object> list = new List <object>();

                for (ISeq s = RT.seq(args); s != null; s = s.next())
                {
                    list.Add(s.first());
                }
                return(create(list));
            }
예제 #2
0
            static public object invokeStatic(ISeq args)
            {
                IArraySeq ias = args as IArraySeq;

                if (ias != null)
                {
                    object[]        argsarray = (object[])ias.ToArray();
                    IPersistentList ret       = EMPTY;
                    for (int i = argsarray.Length - 1; i >= 0; i--)
                    {
                        ret = (IPersistentList)ret.cons(argsarray[i]);
                    }
                    return(ret);
                }

                List <object> list = new List <object>();

                for (ISeq s = RT.seq(args); s != null; s = s.next())
                {
                    list.Add(s.first());
                }
                return(create(list));
            }