‫Hola y bienvenido.
‫En esta lección, vamos a aprender cómo podemos eliminar pines de ejecución de nuestras propias funciones
‫y cómo y cuándo es una buena idea hacerlo.
‫Sumerjámonos.
‫Así que es un poco extraño que nuestra función tiene munición ahora tiene pines de ejecución cuando antes
‫no los necesitábamos y eso empeoró un poco nuestro código.
‫Entonces, ¿qué es eso?
‫¿Por qué sucedió eso?
‫¿Y por qué algunos nodos de función requieren pines de ejecución y otros no?
‫Bueno, todo se reduce a algo llamado efecto secundario.
‫Entonces, ¿qué es un efecto secundario?
‫Esencialmente, un efecto secundario es cuando una función tiene algún tipo de efecto observable después de
‫ejecutarse.
‫Ahora, ¿qué quiero decir con esto?
‫Echemos un vistazo a algunos ejemplos de funciones con efectos secundarios para que pueda comprender las impresiones
‫de la cadena de impresión después de haberlas ejecutado.
‫La cadena de impresión es bastante clara de que algo sucedió porque ahora hay una cadena en su pantalla.
‫Puede ver que hay un impulso de adición de cadena que claramente tiene un efecto observable porque,
‫de repente, lo que ha agregado impulso sale volando hacia la munición establecida a distancia no tiene un efecto
‫observable porque después de haber establecido munición, el valor en esa variable ha cambiado.
‫Ahora, llegados a este punto, quizás se esté preguntando, bueno, seguramente cada función tiene un efecto observable.
‫De lo contrario, ¿cuál es el punto de esto?
‫Bueno, no del todo.
‫Hay cosas tales como funciones puras.
‫Lo que es una función pura es básicamente una función sin efectos secundarios.
‫Sin embargo, tiene valores de retorno.
‫Así que hay valores que salen de esa función.
‫Y ese es todo el propósito de la función, calcular y darnos esos valores.
‫Entonces, de nuevo, echemos un vistazo a algunos ejemplos porque esto lo hará mucho más claro.
‫Consigue munición.
‫Esa es una función pura.
‫No tiene efectos secundarios porque puedes conseguir munición tantas veces como quieras.
‫Y a menos que hagas algo con el valor que obtuviste, tu programa, tu juego no va
‫a ser diferente.
‫Puedes seguir recibiendo munición todo el tiempo, durante todo el juego y no se observará
‫nada diferente en tu juego.
‫Obtener vector de avance activo.
‫Ese es otro en el que puedes obtenerlo tantas veces como quieras.
‫No va a cambiar nada hasta que haga algo con el valor devuelto y todas
‫estas funciones matemáticas como multiplicar menos mayor.
‫Todos estos nodos no tienen efecto en su proyecto hasta que sus resultados se utilizan para un propósito
‫mayor.
‫Así que estas se llaman funciones puras, y probablemente puedas ver que estos son exactamente los nodos
‫que no tenían pines de ejecución porque no los necesitan.
‫No importa cuándo ejecuto obtener munición o si lo ejecuto 50 veces a la vez, no va
‫a importar porque no tiene efectos secundarios observables.
‫Entonces, ¿cómo podemos indicar un modelo que una función es pura?
‫Bueno, echemos un vistazo a mi función de prueba aquí.
‫Así que voy a seleccionarlo en el gráfico de eventos o en el panel de mi modelo.
‫Y puede ver que en el panel de detalles hay una casilla de verificación etiquetada como pura.
‫Entonces, si marca esa casilla de verificación, observe que los patrones de ejecución simplemente desaparecieron.
‫Y todo lo que tenemos ahora son las entradas y salidas de esta función.
‫Ahora esta función se ejecutará cada vez que necesitemos la salida.
‫Entonces, si conecto esta salida en una cadena de impresión, ejecutará esta función antes que la cadena de
‫impresión.
‫Entonces tiene el resultado a tiempo para ejecutar la cadena de impresión.
‫Podemos hacer lo mismo con cualquier función donde no haya efectos secundarios, donde no
‫haya efectos observables como nuestra función tiene munición.
‫Así que me gustaría desafiarte a convertir la munición en una función pura.
‫Así que selecciónelo y configure esa casilla de verificación para hacerlo puro.
‫Y qué pasa con el flujo de ejecución ahora.
‫Lo que actualmente estaba conectado a través de la función.
‫¿A dónde va?
‫Pausa el video y pruébalo.
‫Bueno.
‫Bienvenido de nuevo.
‫Entonces, seleccionemos tiene munición, marcaremos la casilla de verificación pura e instantáneamente verá que los pines de ejecución
‫desaparecen y el flujo de ejecución que fluyó anteriormente tiene munición ahora va directamente a nuestra declaración de rama,
‫que es exactamente lo que queremos ahora tiene ammo solo se ejecutará tan pronto como se ejecute
‫la declaración de rama para obtener el valor de retorno.
‫Ahora una palabra de precaución solo use esta casilla de verificación pura cuando esté seguro de que una función no tiene efectos secundarios.
‫Los casos comunes y los casos de uso para esto son cuando su función simplemente está tratando de calcular un valor como
‫tiene munición.
‫Y es por eso que esta función no sigue la convención de tener un verbo que nombra porque no está
‫haciendo algo, está obteniendo algo o está respondiendo una pregunta.
‫En este caso, la pregunta es si tiene munición.
‫Y, de hecho, podríamos incluso poner un pequeño signo de interrogación en nuestra función, nombrando algo que
‫puede hacer en Blueprint que no puede hacer en C++, lo que nos permite ver que sí, esta función está respondiendo
‫una pregunta.
‫No está tratando de hacer algo.
‫Muy a menudo, la distinción entre funciones puras y no puras es si encaja con un verbo o
‫si encaja con una pregunta.
‫Entonces, para repasar, echemos un vistazo a nuestro glosario.
‫Un efecto secundario es un efecto observable de una función que hemos visto y hemos visto ejemplos de esas funciones.
‫Y una función pura es una función sin efectos secundarios, como estas funciones de obtención o funciones de respuesta
‫a preguntas.
‫Eso es todo por esta conferencia.
‫Veré en la siguiente.