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]
**********************************************************************

Reply via email to