Esempio n. 1
0
        public void EvalUnique(RCRunner runner, RCClosure closure, RCBlock right)
        {
            // Preserve the names in the original order
            // Always use the last value for any given name
            RCBlock          result = RCBlock.Empty;
            RCArray <string> names  = new RCArray <string> ();

            for (int i = 0; i < right.Count; ++i)
            {
                RCBlock name = right.GetName(i);
                if (!names.Contains(name.Name))
                {
                    names.Write(name.Name);
                }
            }
            for (int i = 0; i < names.Count; ++i)
            {
                RCBlock name = right.GetName(names[i]);
                result = new RCBlock(result, name.Name, name.Evaluator, name.Value);
            }
            runner.Yield(closure, result);
        }