Пример #1
0
        public int Compare(ISeq <A> x, ISeq <A> y)
        {
            if (ReferenceEquals(x, y))
            {
                return(0);
            }
            if (ReferenceEquals(x, null))
            {
                return(-1);
            }
            if (ReferenceEquals(y, null))
            {
                return(1);
            }

            var enumx = x.GetEnumerator();
            var enumy = y.GetEnumerator();

            while (true)
            {
                bool r1 = enumx.MoveNext();
                bool r2 = enumy.MoveNext();
                if (!r1 && !r2)
                {
                    return(0);
                }
                if (!r1)
                {
                    return(-1);
                }
                if (!r2)
                {
                    return(1);
                }

                var cmp = default(ORD).Compare(enumx.Current, enumy.Current);
                if (cmp != 0)
                {
                    return(cmp);
                }
            }
        }
Пример #2
0
 public IEnumerator <T> GetEnumerator()
 {
     return(innerSeq.GetEnumerator());
 }
Пример #3
0
 public override IEnumerator <U> GetEnumerator() => seq.GetEnumerator().Select(fn);
Пример #4
0
 public override IEnumerator <T> GetEnumerator() => seq.GetEnumerator().Skip(start).Take(count);