An Elementary Introduction to the Wolfram Language
39Valores inmediatos y diferidos
En la asignación inmediata, el valor se calcula tan pronto como se hace la asignación y ya no vuelve a recalcularse. En la diferida, el cálculo del valor se deja pendiente pero se lleva a cabo cada vez que se requiere.
En la asignación inmediata (=), se genera inmediatamente un color aleatorio:
In[1]:=
Click for copyable input
Out[1]=
Y cada vez que se solicita value, se obtiene el mismo color:
In[2]:=
Click for copyable input
Out[2]=
En cambio, en la asignación diferida (:=) no se genera de inmediato el color aleatorio:
In[3]:=
Click for copyable input
Pero cada vez que se solicita value, se efectúa RandomColor[], y se genera nuevamente el color:
In[4]:=
Click for copyable input
Out[4]=
Por lo regular, el color será distinto en cada ocasión:
In[5]:=
Click for copyable input
Out[5]=
Es muy común que se use := si no se tiene ya todo listo al estar definiendo un valor.
Puede hacerse una asignación diferida para círculos aun cuando no se tenga listo el valor de n:
In[6]:=
Click for copyable input
Ahora, se le da un valor a n:
In[7]:=
Click for copyable input
Out[7]=
In[8]:=
Click for copyable input
Out[8]=
La idea de la asignación diferida es directamente análoga al concepto Delayed que se vio en el despliegue de páginas web. En la asignación diferida no se calcula un valor hasta que se necesita. De la misma manera, al usar CloudDeploy con Delayed no se computa el contenido de una página web hasta el momento que alguien la solicita.
Existe también la noción de reglas diferidas. xrhs calcula inmediatamente rhs. En cambio, en el caso de la regla diferida xrhs (escrito como :>), rhs se recalcula cada vez que se solicita.
Aquí se tiene una regla inmediata, donde se calcula inmediatamente un valor específico de RandomReal[ ]:
In[9]:=
Click for copyable input
Out[9]=
Se puede hacer la sustitución de cuatro x, pero todas resultan ser iguales:
In[10]:=
Click for copyable input
Out[10]=
Ahora se tiene una regla diferida, donde el cálculo de RandomReal[] se difiere:
In[11]:=
Click for copyable input
Out[11]=
RandomReal[] se calcula separadamente cada vez que se hace la sustitución de cada x, lo que resulta en cuatro valores diferentes:
In[12]:=
Click for copyable input
Out[12]=
39.1Sustituya x en {x, x+1, x+2, x^2} por el mismo número aleatorio del 0 al 100. »
Muestra de salida esperada:
Out[]=
39.2Sustituya cada x en {x, x+1, x+2, x^2} por un número aleatorio del 0 al 100, escogido por separado. »
Muestra de salida esperada:
Out[]=
Porque no siempre se quiere recalcular algo, a menos que sea necesario. Es más eficiente calcular en una sola ocasión y luego usar el mismo resultado una y otra vez.
¿Cómo se enuncian en voz alta := y :>?
:= se dice, por lo general, dos puntos igual aunque, a veces, asignación diferida. :> casi siempre dos puntos mayor pero, también, regla diferida.
Se inicia un bucle infinito que será interrumpido por el sistema en algún momento. Con x={x} sucede lo mismo.
¿Qué significan las etiquetas In[n]:= para las entradas, y Out[n]= para las salidas ?
Indican que las entradas se asignan a In[n] y las salidas a Out[n]. El := para la entrada significa que la asignación es diferida, de manera tal que si se solicita In[n] se recalcula el resultado.
 
Download Notebook Version
en