Translate
domingo, 1 de septiembre de 2019
Citas y condiciones en Factor
Similar a otros lenguajes, las funciones pueden ser mantenidas en variables, bueno en la pila. Estas clausuras se denominan “quotation” o citas y se escribe delimitado por [ ] .
[ 42 + ]
Veamos un ejemplo :
IN: scratchpad 20
--- Data stack:
20
IN: scratchpad [ 42 + ]
--- Data stack:
20
[ 42 + ]
IN: scratchpad call
--- Data stack:
62
Las citas son importantes y se utilizan para las condiciones.
La palabra if recibe como parámetro 1 condición y 2 citas y ejecuta el primero si es verdadero y el segundo de lo contrario :
IN: scratchpad 10 0 > [ "pos" ] [ "neg" ] if .
"pos"
IN: scratchpad -5 0 > [ "pos" ] [ "neg" ] if .
"neg"
IN: scratchpad "cool" [ "yes" ] [ "no" ] if .
"yes"
Por si hay dudas el if tiene la forma :
<condition> <true branch> <false branch> if
También podemos utilizar la palabra ? :
IN: scratchpad 10 0 > "pos" "neg" ? .
"pos"
IN: scratchpad -5 0 > "pos" "neg" ? .
"neg"
La palabra when y unless se puede utilizar con una sola cita :
IN: scratchpad 10 0 > [ "pos" . ] when
"pos"
IN: scratchpad -5 0 > [ "neg" . ] unless
"neg"