intersectionWhen<T> function

List<T> intersectionWhen<T>(
  1. Iterable<Iterable<T>> list,
  2. bool compare(
    1. T,
    2. T
    )
)

同上(后续优化)

Implementation

List<T> intersectionWhen<T>(Iterable<Iterable<T>> list, bool Function(T, T) compare) {
  bool setHasFun(Iterable<T> ts, T va) {
    for (var v2 in ts) {
      if (compare.call(va, v2)) {
        return true;
      }
    }
    return false;
  }

  List<T> rl = [];
  for (var l in list) {
    for (var lv in l) {
      bool has = true;
      for (var ls in list) {
        if (!setHasFun(ls, lv)) {
          has = false;
          break;
        }
      }
      if (has) {
        rl.add(lv);
      }
    }
  }
  return rl;
}