Formula
Historia
Lanzamiento | Modificaciones |
---|---|
17 R6 | Renombrado (New formula -> Formula) |
17 R3 | Añadidos |
Formula ( formulaExp : Expression ) : 4D.Function
Parámetros | Tipo | Descripción | |
---|---|---|---|
formulaExp | Expression | → | Fórmula a devolver como objeto |
Result | 4D.Function | ← | Función nativa que encapsula la fórmula |
Descripción
El comando Formula
crea un objeto 4D Function
basado en la expresión formulaExp. formulaExp puede ser tan simple como un valor único o complejo, como un método proyecto con parámetros.
Tener una fórmula como objeto permite pasarla como parámetro (atributo calculado) a los comandos o a los métodos o ejecutarla desde varios componentes sin necesidad de declararla como "compartida por los componentes y la base de datos local". Cuando se llama, el objeto fórmula se evalúa en el contexto de la base de datos o del componente que lo creó.
La fórmula devuelta puede ser llamada con:
- los métodos
.call()
o.apply()
, o - la sintaxis de notación objeto (ver objeto formula).
var $f : 4D.Function
$f:=Formula(1+2)
$o:=New object("myFormula";$f)
//tres formas diferentes de llamar a la fórmula
$f.call($o) //devuelve 3
$f.apply($o) //devuelve 3
$o.myFormula() //devuelve 3
Puede pasar parámetros a Formula
, como se muestra a continuación en el ejemplo 4.
Se puede especificar el objeto sobre el que se ejecuta la fórmula, como se ve en ejemplo 5. Se puede acceder a las propiedades del objeto mediante el comando This
.
Si formulaExp utiliza variables locales, sus valores se copian y almacenan en el objeto fórmula devuelto durante su creación. Cuando se ejecuta, la fórmula utiliza estos valores copiados en lugar del valor actual de las variables locales. Tenga en cuenta que no se soporta el uso de arrays como variables locales.
El objeto creado por Formula
puede guardarse, por ejemplo, en un campo de base de datos o en un documento blob.
Ejemplo 1
Una fórmula simple:
var $f : 4D.Function
$f:=Formula(1+2)
var $o : Object
$o:=New object("f";$f)
$result:=$o.f() // devuelve 3
Ejemplo 2
Una fórmula utilizando variables locales:
$value:=10
$o:=New object("f";Formula($value))
$value:=20
$result:=$o.f() // devuelve 10
Ejemplo 3
Una fórmula sencilla que utiliza parámetros:
$o:=New object("f";Formula($1+$2))
$result:=$o.f(10;20) //devuelve 30
Ejemplo 4
Una fórmula utilizando un método proyecto con parámetros:
$o:=New object("f";Formula(myMethod))
$result:=$o.f("param1";"param2") // equivalente a $result:=myMethod("param1";"param2")
Ejemplo 5
Utilizando This
:
$o:=New object("fullName";Formula(This.firstName+" "+This.lastName))
$o.firstName:="John"
$o.lastName:="Smith"
$result:=$o.fullName() //devuelve "John Smith"
Ejemplo 6
Llamar a una fórmula utilizando la notación de objetos:
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)
//define la fórmula de las propiedades del objeto
$feta.calc:=$calc
$robot.calc:=$calc
//llama la 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]"}
Ver también
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