如何绑定到 1 个以上的 ReactFX 可观察对象?

How to bind to more than 1 ReactFX observable?

在常规 JavaFX 中,我会像这样在 2 个或更多可观察对象上创建绑定:

xxxProperty().bind(Bindings.createObjectBinding(() -> {...}, observable1, observable2, ...));

在 ReactFx 中,我看到我可以创建这样的绑定:

xxxProperty().bind(val.map(value -> {...}));

但是我如何在 2 个或更多 ReactFX 可观察对象(Val and/or Var)上创建绑定?

对于一般情况,使用以下之一:

static <T> Val<T> create(Supplier<? extends T> computeValue, EventStream<?> invalidations)
static <T> Val<T> create(Supplier<? extends T> computeValue, Observable... dependencies)

为了组合 2-6 个值,提供了一些方便的方法:

static <A,B,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, BiFunction<? super A,? super B,? extends R> f)
static <A,B,C,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, TriFunction<? super A,? super B,? super C,? extends R> f)
static <A,B,C,D,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, ObservableValue<D> src4, TetraFunction<? super A,? super B,? super C,? super D,? extends R> f)
static <A,B,C,D,E,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, ObservableValue<D> src4, ObservableValue<E> src5, PentaFunction<? super A,? super B,? super C,? super D,? super E,? extends R> f)
static <A,B,C,D,E,F,R> Val<R> combine(ObservableValue<A> src1, ObservableValue<B> src2, ObservableValue<C> src3, ObservableValue<D> src4, ObservableValue<E> src5, ObservableValue<F> src6, HexaFunction<? super A,? super B,? super C,? super D,? super E,? super F,? extends R> f)

所有这些都是 Val 上的静态方法。