Formula
História
Release | Mudanças |
---|---|
17 R6 | Renomeado (New formula -> Formula) |
17 R3 | Adicionado |
Formula ( formulaExp : Expression ) : 4D.Function
Parâmetro | Tipo | Descrição | |
---|---|---|---|
formulaExp | Expression | → | Fórmula a ser retornada como objeto |
Resultados | 4D. Function | ← | Função nativa encapsulando a fórmula |
Descrição
The Formula
command creates a 4D Function
object based upon the formulaExp expression. formulaExp can be as simple as a single value or complex, such as a project method with parameters.
Ter uma fórmula como se fosse um objeto permite que seja passada como um parâmetro (atributo calculado) para comandos ou métodos, ou para ser executado a partir de vários componentes, sem precisar declará-los como "partilhados por componentes e database host". Quando chamado, o objeto fórmula é avaliado sem o contexto do banco de dados ou componente que o criou.
A fórmula retornada pode ser chamada com:
- os métodos
.call()
ou.apply()
, - a sintaxe de notação de objeto (consulte objeto formula).
var $f : 4D. Function
$f:=Formula(1+2)
$o:=New object("myFormula";$f)
//três formas diferentes de chamar a fórmula
$f.call($o) //retorna 3
$f.apply($o) //retorna 3
$o.myFormula() //retorna 3
You can pass parameters to the Formula
, as seen below in example 4.
You can specify the object on which the formula is executed, as seen in example 5. As propriedades do objeto podem ser acessadas via o comando This
.
If formulaExp uses local variables, their values are copied and stored in the returned formula object when it is created. Quando executados, a fórmula usa esses valores copiados ao invés do valor atual da variável local. Note que usar arrays como variáveis locais não são compatíveis.
The object created by Formula
can be saved, for example, in a database field or in a blob document.
Exemplo 1
Uma fórmula simples:
var $f : 4D. Function
$f:=Formula(1+2)
var $o : Object
$o:=New object("f";$f)
$result:=$o.f() // devoluções 3
Exemplo 2
Uma fórmula usando um método projeto com parâmetros:
$value:=10
$o:=New object("f";Formula($value))
$value:=20
$result:=$o.f() // retorna 10
Exemplo 3
Uma fórmula usando variáveis locais:
$o:=New object("f";Formula($1+$2))
$result:=$o.f(10;20) //retorna 30
Exemplo
Uma fórmula simples usando parâmetros:
$o:=New object("f";Formula(myMethod))
$result:=$o.f("param1";"param2") // equivalent to $result:=myMethod("param1";"param2")
Exemplo 2
Usando This
:
$o:=New object("fullName";Formula(This.firstName+" "+This.lastName))
$o.firstName:="John"
$o.lastName:="Smith"
$result:=$o.fullName() //retorna "John Smith"
Exemplo 6
Chamar uma fórmula usando notação de objeto:
var $feta; $robot : Object
var $calc : 4D. Function
$robot:=New object("name";"Robot";"price";543;"quantity";2)
$feta:=New object("name";"Feta";"price";12.5;"quantity";5)
$calc:=Formula(This.total:=This.price*This.quantity)
//estabelece a fórmula às propriedades objeto
$feta.calc:=$calc
$robot.calc:=$calc
//chame a fórmula
$feta.calc() // $feta={name:Feta,price:12.5,quantity:5,total:62.5,calc:"[object Formula]"}
$robot.calc() // $robot={name:Robot,price:543,quantity:2,total:1086,calc:"[object Formula]"}
Veja também
4D Blog - Formula: More power behind simplicity
4D Blog - Formula: Think outside the box
4D Blog - Write your own methods for objects
Formula from string