예제 #1
0
        protected override NodeBase ReduceTerminalItem(NodeBase node)
        {
            var value = node.GetTerminalValue <TIn>();

            if (!(value is TOut))
            {
                throw new InvalidCastException();
            }
            return(CreateTerminal((TOut)(object)value));
        }
예제 #2
0
        protected override NodeBase ReduceTerminalItem(NodeBase node)
        {
            var value = node.GetTerminalValue <TIn>();

            if (this.itemsTaken >= this.count)
            {
                return(Null);
            }

            this.itemsTaken++;
            return(CreateTerminal(value));
        }
예제 #3
0
        protected override NodeBase ReduceTerminalItem(NodeBase node)
        {
            var value = node.GetTerminalValue <TIn>();

            if (this.previousValues.Contains(value, this.equalityComparer))
            {
                return(Null);
            }

            this.previousValues.Add(value);
            return(CreateTerminal(value));
        }
예제 #4
0
        protected override NodeBase ReduceTerminalItem(NodeBase node)
        {
            var value = node.GetTerminalValue <TIn>();

            return(CreateTerminal(this.selector(value)));
        }
예제 #5
0
        protected override NodeBase ReduceTerminalItem(NodeBase node)
        {
            var value = node.GetTerminalValue <TIn>();

            return(value is TOut?CreateTerminal((TOut)(object)value) : Null);
        }
예제 #6
0
        protected override NodeBase ReduceTerminalItem(NodeBase node)
        {
            var value = node.GetTerminalValue <TIn>();

            return(this.predicate(value) ? CreateTerminal(value) : Null);
        }