È disponibile un nuovo comando che consente di utilizzare le formule nel codice. È ora possibile incapsularle in oggetti e richiamarle quando necessario. Non è più necessario scrivere il codice come testo. Ora è sufficiente passare la formula nel comando e il gioco è fatto! Questa è un’ottima aggiunta: poiché il codice non è testo, si può beneficiare dell’evidenziazione della sintassi e di tutte le altre funzionalità avanzate dell’editor di codice!
Incapsulare una formula in un oggetto
Con il comando Formula è molto semplice incapsulare una formula in un oggetto:
$f:=Formula(ALERT("Hello world"))
Naturalmente, poiché la formula è incapsulata in un oggetto, è possibile incapsularla in una proprietà di un oggetto e creare i metodi dell’oggetto incapsulato:
$f:=New object
$f .message:=Formula(ALERT("Hello world"))
$f .
message(
) // Display alert dialog box with the message "Hello world"
Se volete passare dei parametri alla vostra formula, basta usare $1, $2 … come nei vostri metodi:
$f:=New object
$f .message:=Formula(ALERT("Ciao "+$1))
$f .message("John")
// Display alert dialog box with the message "Hello John"
Se invece si vuole utilizzare il valore di un attributo di un oggetto, il comando This è la risposta:
$f:=New object
$f .text:="Hello World"
$f .message:=Formula(ALERT(This.text))
$f .
message()
// Display alert dialog box with the message "Hello world"
Infine, è possibile utilizzare un metodo come formula:
$person$g:=New object
$person .firstName:="John"
$person .lastName:="Smith"
$person .greeting:=Formula(Greeting )
$g :=$person.greeting("ciao")
// $g:="hello John Smith"
:=$person.greeting("ciao")
// $g:="hi John Smith"
Con il metodo Greeting metodo:
$0:=$1+" "+This.firstName+" "+This.lastName
Si possono trovare altri esempi di utilizzo di Formula in questa HDI:
Richiamo della formula
È anche possibile eseguire un oggetto formula senza impostarlo come proprietà di un altro oggetto, utilizzando i comandi call() e apply().
$f:=Formula(ALERT(String($1+" "+$2))
$f .call(null; "Hello"; "world")
)
$f .apply(null;New collection ("Hello"; "world" //formula.apply object methods
Incapsulare una formula in un oggetto a partire da una stringa
Esiste un modo per utilizzare una versione testuale di una formula per creare un metodo con il metodo Formula from string comando:
$textFormula:=Request("Digitare una formula")
If (ok=1)
$f :=Formula from string($textFormula)
ALERT ("Risultato = "+String($f.call ())
End if