Když používáte kolekce s členskou metodou, která potřebuje zpětné volání, mnozí z vás nás požádali o jednodušší způsob.
Žádali jste nás o to, my jsme vám to splnili!
Počínaje verzí 4D v19 R6 umožňuje 4D používat vzorec pro definici zpětného volání v členských funkcích kolekce, tzv. EXECUTE METHOD IN SUBFORM, CALL FORM, a CALL WORKER příkazy. Pokud dokážete svůj kód zredukovat na jednoduchý výraz, můžete jej předat přímo do vzorce bez použití metody.
vzorec v KOLEKCIi
Nyní můžete vzorec použít jako zpětné volání v členských metodách: .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()
Chcete-li například vyfiltrovat kolekci tak, abyste našli všechny členy větší než 0, můžete to udělat na jednom řádku:
$result:=$c.filter(Formula($1.value>0))
Jak vidíte výše, pro větší jednoduchost a čitelnost jsme ve vzorcích učinili $1.result nepovinným.
Samozřejmě můžete vždy použít kód:
$c:=New collection
$c.push(1;-5; -3; -1;3; -4; -6; -2;10)
$result:=$c.filter("NumberGreaterThan0")
ale můžete použít i vzorec, který odkazuje na metodu, a využít tak doplňování kódu k nalezení názvu metody a využít automatického přejmenování, pokud změníte název metody:
$c:=New collection
$c.push(1;-5; -3; -1;3; -4; -6; -2;10)
$result:=$c.filter(Formula(NumberGreaterThan0))
s metodou NumberGreaterThan0:
#DECLARE ($param:Object)
$param.result:=$param.value>0
formula v příkazech
Vzorec můžete použít k definici zpětného volání v metodách typu EXECUTE METHOD IN SUBFORM, CALL FORM, a CALL WORKER příkazů.
Pokud jde o kolekce, můžete používat výrazy, aniž byste museli vytvářet metodu:
// Close the windows in the context of the form
CALL FORM($windows;formula(CANCEL))
nebo se na metodu odkázat jedním z těchto 2 způsobů:
EXECUTE METHOD IN SUBFORM("Subform"; Formula(UpdateField))
nebo
EXECUTE METHOD IN SUBFORM("Subform"; "UpdateField")
Vyzkoušejte všechny tyto nové funkce s výše uvedeným HDI a neváhejte vyjádřit svůj názor na fóru!