Hello! first off, you can see from the round orange icon that indeed I am using v18 LTS and not an R (feature) release. preparation for publishing the demo is still ongoing, but you will get access to the source code soon.
the seemingly "new" commands are just custom object methods defined by "Formula". https://doc.4d.com/4Dv18/4D/18/Formula.301-4505749.en.html to give an example, if you do $object:=New object("add";Formula(do_add);"val";0) and the project method "do_add" does something like This.val:=This.val+$1 $0:=This then you can chain methods like: $object.add(1).add(2).add(3) you may ask yourself, "since when is there an add() method?" but of course, we are entering object-based territory, so the functionality of an add() method depends on its receiver. --- although any single line of code can be used to create a formula, and there are cool things you can do by passing local variables in definition, as a kind of static properties to the created formula, I feel the best practice is to always pass a project method with no parameters, which would make the formula something similar to a "function pointer". you see, a project method is like a shared object, so if you create a formula from a project method, you get a shared formula. this way you can attach that formula to a shared object, more specifically Storage, which is similar to how classes (watch Laurent Esnault's presentation!) work. one more thing, you can pass a formula that encapsulates a project method on the host to an object defined in a component, and the component can invoke that formula (which is a project method) even if the method is not "shared". the advantage is that you are no longer using string to reference a project method (as in EXECUTE METHOD) you are passing the tokenised method itself. it makes it easier to encapsulate asynchronous procedures, where you simply expose an object, that exposes a method (formula), that optionally takes a callback function (again, a formula). the object may internally do complex things such as bridging to a cooperative process via Signal, https://doc.4d.com/4Dv18/4D/18/New-signal.301-4505566.en.html or a method that executes on the server (which requires cooperative mode), all of which is transparent to the callee. but I digress. the point is, the demo is written using v18 language with no hidden tricks or plugins. > On Apr 23, 2020, at 22:37, Eric Naujock via 4D_Tech <[email protected]> > wrote: > > Keisuke Miyakos presentation on Document Production managed to get me > excited. But I cannot find in the V18 or v18R2 documentation more about what > he discussed. Nor doe the command seem to exist in V18.1. Unless I’m missing > something. ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:[email protected] **********************************************************************

