Exemplo n.º 1
0
  default PTuple8<T1, T2, T3, T4, T5, T6, T7, T8> memo() {
    if (arity() != 8) return (PTuple8) PTuple7.super.memo();
    PTuple8<T1, T2, T3, T4, T5, T6, T7, T8> host = this;
    Map<Integer, Object> values = new ConcurrentHashMap<>();

    return new TupleImpl(Arrays.asList(), 8) {

      public T1 v1() {
        return (T1) values.computeIfAbsent(new Integer(0), key -> host.v1());
      }

      public T2 v2() {
        return (T2) values.computeIfAbsent(new Integer(1), key -> host.v2());
      }

      public T3 v3() {
        return (T3) values.computeIfAbsent(new Integer(2), key -> host.v3());
      }

      public T4 v4() {
        return (T4) values.computeIfAbsent(new Integer(3), key -> host.v4());
      }

      public T5 v5() {
        return (T5) values.computeIfAbsent(new Integer(4), key -> host.v5());
      }

      public T6 v6() {
        return (T6) values.computeIfAbsent(new Integer(5), key -> host.v6());
      }

      public T7 v7() {
        return (T7) values.computeIfAbsent(new Integer(6), key -> host.v7());
      }

      public T8 v8() {
        return (T8) values.computeIfAbsent(new Integer(7), key -> host.v8());
      }

      @Override
      public List<Object> getCachedValues() {
        return Arrays.asList(v1(), v2(), v3(), v4(), v5(), v6(), v7(), v8());
      }

      @Override
      public Iterator iterator() {
        return getCachedValues().iterator();
      }
    };
  }
Exemplo n.º 2
0
  /*
   * Lazily Map 7th element and memoise the result
   * @param fn Map function
   * @return
   */
  default <T> PTuple8<T1, T2, T3, T4, T5, T6, T, T8> lazyMap7(Function<T7, T> fn) {
    if (arity() != 8) return (PTuple8) PTuple7.super.lazyMap7(fn);

    return new LazyMap7PTuple8(fn, (PTuple8) this);
  }
Exemplo n.º 3
0
  /**
   * Map the 7th element in a tuple to a different value
   *
   * @param fn Mapper function
   * @return new Tuple8
   */
  default <T> PTuple8<T1, T2, T3, T4, T5, T6, T, T8> map7(Function<T7, T> fn) {
    if (arity() != 8) return (PTuple8) PTuple7.super.map7(fn);

    return of(v1(), v2(), v3(), v4(), v5(), v6(), fn.apply(v7()), v8());
  }
Exemplo n.º 4
0
 /**
  * Strict mapping of the first element
  *
  * @param fn Mapping function
  * @return Tuple8
  */
 default <T> PTuple8<T, T2, T3, T4, T5, T6, T7, T8> map1(Function<T1, T> fn) {
   if (arity() != 8) return (PTuple8) PTuple7.super.map1(fn);
   else return PowerTuples.tuple(fn.apply(v1()), v2(), v3(), v4(), v5(), v6(), v7(), v8());
 }