﻿1
00:00:04,330 --> 00:00:05,470
‫Ciao e Benvenuto.

2
00:00:05,470 --> 00:00:11,620
‫In questa lezione impareremo come rimuovere i pin di esecuzione dalle nostre funzioni e

3
00:00:11,920 --> 00:00:15,610
‫come e quando è una buona idea farlo.

4
00:00:15,730 --> 00:00:16,420
‫Immergiamoci.

5
00:00:17,050 --> 00:00:23,470
‫Quindi è un po' strano che la nostra funzione ha munizioni ora abbia pin di esecuzione quando in precedenza non

6
00:00:23,470 --> 00:00:27,400
‫ne avevamo bisogno e questo ha peggiorato un po' il nostro codice.

7
00:00:27,700 --> 00:00:29,050
‫Allora cos'è?

8
00:00:29,050 --> 00:00:30,190
‫Perché è successo?

9
00:00:30,190 --> 00:00:35,530
‫E perché alcuni nodi funzione richiedono pin di esecuzione e altri no?

10
00:00:35,740 --> 00:00:39,700
‫Bene, tutto si riduce a qualcosa chiamato effetto collaterale.

11
00:00:39,820 --> 00:00:41,950
‫Allora, qual è un effetto collaterale?

12
00:00:42,220 --> 00:00:49,480
‫In sostanza, un effetto collaterale è quando una funzione ha una sorta di effetto osservabile dopo che è stata

13
00:00:49,480 --> 00:00:49,990
‫eseguita.

14
00:00:50,470 --> 00:00:52,040
‫Ora, cosa intendo con questo?

15
00:00:52,060 --> 00:00:56,990
‫Diamo un'occhiata ad alcuni esempi di funzioni con effetti collaterali in modo da poter capire

16
00:00:57,010 --> 00:00:59,980
‫che stampa la stringa di stampa dopo l'esecuzione.

17
00:00:59,980 --> 00:01:05,830
‫Stampa stringa è abbastanza chiaro che è successo qualcosa perché ora c'è una stringa sullo schermo.

18
00:01:05,830 --> 00:01:12,400
‫Puoi vedere che c'è un impulso di aggiunta di stringa che ha chiaramente un effetto osservabile perché

19
00:01:12,400 --> 00:01:19,360
‫all'improvviso la cosa a cui hai aggiunto l'impulso vola via nella distanza impostata per le munizioni non ha effetto

20
00:01:19,360 --> 00:01:25,090
‫osservabile perché dopo aver impostato le munizioni, il valore in quella variabile è cambiato.

21
00:01:25,240 --> 00:01:29,290
‫Ora a questo punto potresti chiederti, beh, sicuramente ogni funzione ha un effetto osservabile.

22
00:01:29,290 --> 00:01:31,270
‫Altrimenti, che senso ha?

23
00:01:31,720 --> 00:01:32,710
‫Beh, non proprio.

24
00:01:32,710 --> 00:01:35,560
‫Ci sono cose come funzioni pure.

25
00:01:35,560 --> 00:01:41,020
‫Ciò che è una funzione pura è fondamentalmente una funzione senza effetti collaterali.

26
00:01:41,200 --> 00:01:44,890
‫Tuttavia, ha valori di ritorno.

27
00:01:45,130 --> 00:01:47,350
‫Quindi ci sono valori che escono da quella funzione.

28
00:01:47,350 --> 00:01:53,650
‫E questo è l'intero scopo della funzione è calcolare e darci quei valori.

29
00:01:53,890 --> 00:01:57,010
‫Quindi, di nuovo, diamo un'occhiata ad alcuni esempi perché questo lo renderà molto più chiaro.

30
00:01:57,580 --> 00:01:58,420
‫Ottieni munizioni.

31
00:01:58,540 --> 00:02:01,030
‫Questa è una pura funzione.

32
00:02:01,030 --> 00:02:06,490
‫Non ha effetti collaterali perché puoi ottenere munizioni tutte le volte che vuoi.

33
00:02:06,700 --> 00:02:12,910
‫E a meno che tu non faccia qualcosa con il valore che ne hai ricavato, il tuo programma, il tuo

34
00:02:12,910 --> 00:02:14,350
‫gioco non sarà diverso.

35
00:02:14,350 --> 00:02:20,260
‫Puoi semplicemente continuare a prendere munizioni tutto il tempo, durante tutto il gioco e nulla sarà

36
00:02:20,260 --> 00:02:22,600
‫osservabile di diverso nel tuo gioco.

37
00:02:22,750 --> 00:02:24,850
‫Diventa vettore in avanti attivo.

38
00:02:24,850 --> 00:02:27,700
‫Questo è un altro in cui puoi ottenerlo tutte le volte che vuoi.

39
00:02:27,700 --> 00:02:34,300
‫Non cambierà nulla finché non fai qualcosa con il valore restituito e tutte queste

40
00:02:34,300 --> 00:02:37,660
‫funzioni matematiche come moltiplica meno maggiore.

41
00:02:37,930 --> 00:02:46,390
‫Tutti questi nodi non hanno effetto sul tuo progetto finché i loro risultati non vengono utilizzati per uno scopo

42
00:02:46,390 --> 00:02:47,110
‫maggiore.

43
00:02:47,350 --> 00:02:53,230
‫Quindi queste sono chiamate funzioni pure e probabilmente puoi vedere che questi sono esattamente i nodi che

44
00:02:53,230 --> 00:02:56,830
‫non avevano pin di esecuzione perché non ne hanno bisogno.

45
00:02:56,830 --> 00:03:04,300
‫Non importa quando corro a prendere munizioni o se lo faccio 50 volte una volta, non

46
00:03:04,300 --> 00:03:08,080
‫importa perché non ha effetti collaterali osservabili.

47
00:03:08,620 --> 00:03:13,300
‫Quindi, come possiamo indicare un progetto che una funzione è pura?

48
00:03:13,750 --> 00:03:16,120
‫Bene, diamo un'occhiata alla mia funzione di test qui.

49
00:03:16,120 --> 00:03:20,560
‫Quindi lo selezionerò nel grafico dell'evento o nel riquadro del mio progetto.

50
00:03:21,100 --> 00:03:25,860
‫E puoi vedere che nel riquadro dei dettagli c'è una casella di controllo etichettata pure.

51
00:03:25,870 --> 00:03:31,120
‫Quindi, se selezioni quella casella di controllo, nota che i modelli di esecuzione sono appena scomparsi.

52
00:03:31,120 --> 00:03:35,140
‫E tutto ciò che abbiamo ora sono gli input e gli output di questa funzione.

53
00:03:35,560 --> 00:03:40,060
‫Ora questa funzione verrà eseguita ogni volta che avremo bisogno dell'output.

54
00:03:40,060 --> 00:03:46,690
‫Quindi, se collego questo output in una stringa di stampa, eseguirà questa funzione prima della stringa di

55
00:03:46,690 --> 00:03:47,140
‫stampa.

56
00:03:47,260 --> 00:03:51,610
‫Quindi ha il risultato in tempo per eseguire la stringa di stampa.

57
00:03:52,030 --> 00:03:57,640
‫Possiamo fare lo stesso con qualsiasi funzione in cui non ci sono effetti collaterali, dove non

58
00:03:57,640 --> 00:04:01,360
‫ci sono effetti osservabili come la nostra funzione ha munizioni.

59
00:04:01,420 --> 00:04:06,010
‫Quindi vorrei sfidarti a trasformare le munizioni in una pura funzione.

60
00:04:06,430 --> 00:04:09,880
‫Quindi selezionalo e imposta quella casella di controllo per renderlo puro.

61
00:04:10,450 --> 00:04:14,320
‫E cosa succede ora al flusso di esecuzione.

62
00:04:14,320 --> 00:04:17,200
‫Quello che attualmente è stato collegato tramite la funzione.

63
00:04:17,470 --> 00:04:18,340
‫Dove va?

64
00:04:18,730 --> 00:04:20,530
‫Metti in pausa il video e prova.

65
00:04:23,780 --> 00:04:24,350
‫Bene.

66
00:04:24,350 --> 00:04:25,160
‫Ben tornato.

67
00:04:25,460 --> 00:04:32,780
‫Quindi selezioniamo ha munizioni, controlleremo la casella di controllo pure e immediatamente vedrai che i pin di

68
00:04:32,780 --> 00:04:40,280
‫esecuzione scompaiono e il flusso di esecuzione che scorreva in precedenza ha munizioni ora passa direttamente alla nostra

69
00:04:40,280 --> 00:04:47,090
‫istruzione branch, che è esattamente quello che vogliamo ora ha le munizioni verranno eseguite non

70
00:04:47,090 --> 00:04:51,740
‫appena verrà eseguita l'istruzione branch per ottenere il valore restituito.

71
00:04:51,860 --> 00:05:00,230
‫Ora una parola di cautela usa questa casella di controllo pura solo quando sei sicuro che una funzione non abbia effetti collaterali.

72
00:05:00,590 --> 00:05:08,120
‫Casi comuni e casi d'uso per questo sono quando la tua funzione sta semplicemente cercando di calcolare un valore come

73
00:05:08,120 --> 00:05:09,140
‫ha munizioni.

74
00:05:09,260 --> 00:05:17,450
‫Ed è per questo che questa funzione non segue la convenzione di avere un nome di verbo perché non sta facendo

75
00:05:17,450 --> 00:05:21,920
‫qualcosa, sta ottenendo qualcosa o sta rispondendo a una domanda.

76
00:05:21,920 --> 00:05:24,500
‫In questo caso, la domanda è ha munizioni.

77
00:05:24,740 --> 00:05:29,420
‫E in effetti, potremmo anche mettere un piccolo punto interrogativo nella nostra funzione, nominando qualcosa che puoi

78
00:05:29,420 --> 00:05:35,330
‫fare in Blueprint che non puoi fare in C++, il che ci permette di vedere che, sì, questa funzione sta rispondendo a

79
00:05:35,330 --> 00:05:36,020
‫una domanda.

80
00:05:36,020 --> 00:05:37,790
‫Non sta cercando di fare qualcosa.

81
00:05:37,790 --> 00:05:44,210
‫Così spesso la distinzione tra funzioni pure e non pure è se si adatta a un verbo o

82
00:05:44,210 --> 00:05:46,430
‫se si adatta a una domanda.

83
00:05:46,460 --> 00:05:48,920
‫Quindi, per rivedere, diamo un'occhiata al nostro glossario.

84
00:05:49,370 --> 00:05:56,420
‫Un effetto collaterale è un effetto osservabile di una funzione che abbiamo visto e abbiamo visto esempi di tali funzioni.

85
00:05:56,780 --> 00:06:03,950
‫E una funzione pura è una funzione senza effetti collaterali, come queste funzioni di ricezione o di risposta

86
00:06:03,950 --> 00:06:05,000
‫alle domande.

87
00:06:05,480 --> 00:06:06,560
‫Questo è tutto per questa lezione.

88
00:06:06,650 --> 00:06:07,850
‫Vedrò nel prossimo.

