﻿1
00:00:04,330 --> 00:00:05,470
‫Hola y bienvenido.

2
00:00:05,470 --> 00:00:11,620
‫En esta lección, vamos a aprender cómo podemos eliminar pines de ejecución de nuestras propias funciones

3
00:00:11,920 --> 00:00:15,610
‫y cómo y cuándo es una buena idea hacerlo.

4
00:00:15,730 --> 00:00:16,420
‫Sumerjámonos.

5
00:00:17,050 --> 00:00:23,470
‫Así que es un poco extraño que nuestra función tiene munición ahora tiene pines de ejecución cuando antes

6
00:00:23,470 --> 00:00:27,400
‫no los necesitábamos y eso empeoró un poco nuestro código.

7
00:00:27,700 --> 00:00:29,050
‫Entonces, ¿qué es eso?

8
00:00:29,050 --> 00:00:30,190
‫¿Por qué sucedió eso?

9
00:00:30,190 --> 00:00:35,530
‫¿Y por qué algunos nodos de función requieren pines de ejecución y otros no?

10
00:00:35,740 --> 00:00:39,700
‫Bueno, todo se reduce a algo llamado efecto secundario.

11
00:00:39,820 --> 00:00:41,950
‫Entonces, ¿qué es un efecto secundario?

12
00:00:42,220 --> 00:00:49,480
‫Esencialmente, un efecto secundario es cuando una función tiene algún tipo de efecto observable después de

13
00:00:49,480 --> 00:00:49,990
‫ejecutarse.

14
00:00:50,470 --> 00:00:52,040
‫Ahora, ¿qué quiero decir con esto?

15
00:00:52,060 --> 00:00:56,990
‫Echemos un vistazo a algunos ejemplos de funciones con efectos secundarios para que pueda comprender las impresiones

16
00:00:57,010 --> 00:00:59,980
‫de la cadena de impresión después de haberlas ejecutado.

17
00:00:59,980 --> 00:01:05,830
‫La cadena de impresión es bastante clara de que algo sucedió porque ahora hay una cadena en su pantalla.

18
00:01:05,830 --> 00:01:12,400
‫Puede ver que hay un impulso de adición de cadena que claramente tiene un efecto observable porque,

19
00:01:12,400 --> 00:01:19,360
‫de repente, lo que ha agregado impulso sale volando hacia la munición establecida a distancia no tiene un efecto

20
00:01:19,360 --> 00:01:25,090
‫observable porque después de haber establecido munición, el valor en esa variable ha cambiado.

21
00:01:25,240 --> 00:01:29,290
‫Ahora, llegados a este punto, quizás se esté preguntando, bueno, seguramente cada función tiene un efecto observable.

22
00:01:29,290 --> 00:01:31,270
‫De lo contrario, ¿cuál es el punto de esto?

23
00:01:31,720 --> 00:01:32,710
‫Bueno, no del todo.

24
00:01:32,710 --> 00:01:35,560
‫Hay cosas tales como funciones puras.

25
00:01:35,560 --> 00:01:41,020
‫Lo que es una función pura es básicamente una función sin efectos secundarios.

26
00:01:41,200 --> 00:01:44,890
‫Sin embargo, tiene valores de retorno.

27
00:01:45,130 --> 00:01:47,350
‫Así que hay valores que salen de esa función.

28
00:01:47,350 --> 00:01:53,650
‫Y ese es todo el propósito de la función, calcular y darnos esos valores.

29
00:01:53,890 --> 00:01:57,010
‫Entonces, de nuevo, echemos un vistazo a algunos ejemplos porque esto lo hará mucho más claro.

30
00:01:57,580 --> 00:01:58,420
‫Consigue munición.

31
00:01:58,540 --> 00:02:01,030
‫Esa es una función pura.

32
00:02:01,030 --> 00:02:06,490
‫No tiene efectos secundarios porque puedes conseguir munición tantas veces como quieras.

33
00:02:06,700 --> 00:02:12,910
‫Y a menos que hagas algo con el valor que obtuviste, tu programa, tu juego no va

34
00:02:12,910 --> 00:02:14,350
‫a ser diferente.

35
00:02:14,350 --> 00:02:20,260
‫Puedes seguir recibiendo munición todo el tiempo, durante todo el juego y no se observará

36
00:02:20,260 --> 00:02:22,600
‫nada diferente en tu juego.

37
00:02:22,750 --> 00:02:24,850
‫Obtener vector de avance activo.

38
00:02:24,850 --> 00:02:27,700
‫Ese es otro en el que puedes obtenerlo tantas veces como quieras.

39
00:02:27,700 --> 00:02:34,300
‫No va a cambiar nada hasta que haga algo con el valor devuelto y todas

40
00:02:34,300 --> 00:02:37,660
‫estas funciones matemáticas como multiplicar menos mayor.

41
00:02:37,930 --> 00:02:46,390
‫Todos estos nodos no tienen efecto en su proyecto hasta que sus resultados se utilizan para un propósito

42
00:02:46,390 --> 00:02:47,110
‫mayor.

43
00:02:47,350 --> 00:02:53,230
‫Así que estas se llaman funciones puras, y probablemente puedas ver que estos son exactamente los nodos

44
00:02:53,230 --> 00:02:56,830
‫que no tenían pines de ejecución porque no los necesitan.

45
00:02:56,830 --> 00:03:04,300
‫No importa cuándo ejecuto obtener munición o si lo ejecuto 50 veces a la vez, no va

46
00:03:04,300 --> 00:03:08,080
‫a importar porque no tiene efectos secundarios observables.

47
00:03:08,620 --> 00:03:13,300
‫Entonces, ¿cómo podemos indicar un modelo que una función es pura?

48
00:03:13,750 --> 00:03:16,120
‫Bueno, echemos un vistazo a mi función de prueba aquí.

49
00:03:16,120 --> 00:03:20,560
‫Así que voy a seleccionarlo en el gráfico de eventos o en el panel de mi modelo.

50
00:03:21,100 --> 00:03:25,860
‫Y puede ver que en el panel de detalles hay una casilla de verificación etiquetada como pura.

51
00:03:25,870 --> 00:03:31,120
‫Entonces, si marca esa casilla de verificación, observe que los patrones de ejecución simplemente desaparecieron.

52
00:03:31,120 --> 00:03:35,140
‫Y todo lo que tenemos ahora son las entradas y salidas de esta función.

53
00:03:35,560 --> 00:03:40,060
‫Ahora esta función se ejecutará cada vez que necesitemos la salida.

54
00:03:40,060 --> 00:03:46,690
‫Entonces, si conecto esta salida en una cadena de impresión, ejecutará esta función antes que la cadena de

55
00:03:46,690 --> 00:03:47,140
‫impresión.

56
00:03:47,260 --> 00:03:51,610
‫Entonces tiene el resultado a tiempo para ejecutar la cadena de impresión.

57
00:03:52,030 --> 00:03:57,640
‫Podemos hacer lo mismo con cualquier función donde no haya efectos secundarios, donde no

58
00:03:57,640 --> 00:04:01,360
‫haya efectos observables como nuestra función tiene munición.

59
00:04:01,420 --> 00:04:06,010
‫Así que me gustaría desafiarte a convertir la munición en una función pura.

60
00:04:06,430 --> 00:04:09,880
‫Así que selecciónelo y configure esa casilla de verificación para hacerlo puro.

61
00:04:10,450 --> 00:04:14,320
‫Y qué pasa con el flujo de ejecución ahora.

62
00:04:14,320 --> 00:04:17,200
‫Lo que actualmente estaba conectado a través de la función.

63
00:04:17,470 --> 00:04:18,340
‫¿A dónde va?

64
00:04:18,730 --> 00:04:20,530
‫Pausa el video y pruébalo.

65
00:04:23,780 --> 00:04:24,350
‫Bueno.

66
00:04:24,350 --> 00:04:25,160
‫Bienvenido de nuevo.

67
00:04:25,460 --> 00:04:32,780
‫Entonces, seleccionemos tiene munición, marcaremos la casilla de verificación pura e instantáneamente verá que los pines de ejecución

68
00:04:32,780 --> 00:04:40,280
‫desaparecen y el flujo de ejecución que fluyó anteriormente tiene munición ahora va directamente a nuestra declaración de rama,

69
00:04:40,280 --> 00:04:47,090
‫que es exactamente lo que queremos ahora tiene ammo solo se ejecutará tan pronto como se ejecute

70
00:04:47,090 --> 00:04:51,740
‫la declaración de rama para obtener el valor de retorno.

71
00:04:51,860 --> 00:05:00,230
‫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.

72
00:05:00,590 --> 00:05:08,120
‫Los casos comunes y los casos de uso para esto son cuando su función simplemente está tratando de calcular un valor como

73
00:05:08,120 --> 00:05:09,140
‫tiene munición.

74
00:05:09,260 --> 00:05:17,450
‫Y es por eso que esta función no sigue la convención de tener un verbo que nombra porque no está

75
00:05:17,450 --> 00:05:21,920
‫haciendo algo, está obteniendo algo o está respondiendo una pregunta.

76
00:05:21,920 --> 00:05:24,500
‫En este caso, la pregunta es si tiene munición.

77
00:05:24,740 --> 00:05:29,420
‫Y, de hecho, podríamos incluso poner un pequeño signo de interrogación en nuestra función, nombrando algo que

78
00:05:29,420 --> 00:05:35,330
‫puede hacer en Blueprint que no puede hacer en C++, lo que nos permite ver que sí, esta función está respondiendo

79
00:05:35,330 --> 00:05:36,020
‫una pregunta.

80
00:05:36,020 --> 00:05:37,790
‫No está tratando de hacer algo.

81
00:05:37,790 --> 00:05:44,210
‫Muy a menudo, la distinción entre funciones puras y no puras es si encaja con un verbo o

82
00:05:44,210 --> 00:05:46,430
‫si encaja con una pregunta.

83
00:05:46,460 --> 00:05:48,920
‫Entonces, para repasar, echemos un vistazo a nuestro glosario.

84
00:05:49,370 --> 00:05:56,420
‫Un efecto secundario es un efecto observable de una función que hemos visto y hemos visto ejemplos de esas funciones.

85
00:05:56,780 --> 00:06:03,950
‫Y una función pura es una función sin efectos secundarios, como estas funciones de obtención o funciones de respuesta

86
00:06:03,950 --> 00:06:05,000
‫a preguntas.

87
00:06:05,480 --> 00:06:06,560
‫Eso es todo por esta conferencia.

88
00:06:06,650 --> 00:06:07,850
‫Veré en la siguiente.

