예제 #1
0
        public static IObservable <T> Where <T>(this IObservable <T> source, Func <T, bool> predicate)
        {
            // optimized path
            WhereObservable <T> whereObservable = source as UniRx.Operators.WhereObservable <T>;

            if (whereObservable != null)
            {
                return(whereObservable.CombinePredicate(predicate));
            }

            ISelect <T> selectObservable = source as UniRx.Operators.ISelect <T>;

            if (selectObservable != null)
            {
                return(selectObservable.CombinePredicate(predicate));
            }

            return(new WhereObservable <T>(source, predicate));
        }
예제 #2
0
        static readonly TimeSpan InfiniteTimeSpan = new TimeSpan(0, 0, 0, 0, -1); // from .NET 4.5

        public static IObservable <TR> Select <T, TR>(this IObservable <T> source, Func <T, TR> selector)
        {
            // sometimes cause "which no ahead of time (AOT) code was generated." on IL2CPP...

            //var select = source as ISelect<T>;
            //if (select != null)
            //{
            //    return select.CombineSelector(selector);
            //}

            // optimized path
            WhereObservable <T> whereObservable = source as UniRx.Operators.WhereObservable <T>;

            if (whereObservable != null)
            {
                return(whereObservable.CombineSelector <TR>(selector));
            }

            return(new SelectObservable <T, TR>(source, selector));
        }
예제 #3
0
파일: Where.cs 프로젝트: ufcpp/UniRx
 public Where(WhereObservable <T> parent, IObserver <T> observer, IDisposable cancel)
     : base(observer, cancel)
 {
     this.parent = parent;
 }