> I’m all for a more declarative coding style also in C++. > I’m wondering if we are re-inventing part of Reactive Programing a la > ReactiveX with QProperty, though? > > The above looks similar to (sodium-cxx): > > cell_sink<QString> surname("John"); > cell_sink<QString> lastname("Smith”); > cell<QString> fullname = surname.lift( > lastname, [](QString s, QString l) { return s + " " + l; }); > > qDebug() << fullname.sample(); > surname.send("Emma"); > qDebug() << fullname.sample(); > > or (RxJS): > > var surname = new BehaviorSubject("John"); > var lastname = new BehaviorSubject("Smith"); > var fullname = new BehaviorSubject(); > r.combineLatest(surname, lastname).pipe(map(([s, l]) => { return s + " " > + l; })).subscribe(fullname); > > console.log(fullname.getValue()); > surname.next("Emma”); > console.log(fullname.getValue()); > > What is the relation of QProperty to Reactive Programing, in which ways can > we orient QProperty on what is done there, or learn from insights in that > field?
> Using "fullname.listen([](QString s) { qDebug() << s; });" (or > "fullname.subscribe(s => console.log(s));”) instead of the explicit logging > in the example above > will print “John Smith”, whereas using change event listeners always requires > special handling of the initial value. I would (naively) think that this would be done by creating a default-constructed value, then setting it? So I've used knockout and observables, and at the same time used Qt, and I always preferred QML over the bindings with that framework. I'm wondering (out loud) if we aren't kinda talking about a opposite of QGadget for our classes - one where it can just emit a changed() event for applicable setters. I'm not sure how much of moc would have to be brought in - obviously we wouldn't want it on every class...? _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development