‫Ciao e Benvenuto.
‫In questa lezione impareremo come rimuovere i pin di esecuzione dalle nostre funzioni e
‫come e quando è una buona idea farlo.
‫Immergiamoci.
‫Quindi è un po' strano che la nostra funzione ha munizioni ora abbia pin di esecuzione quando in precedenza non
‫ne avevamo bisogno e questo ha peggiorato un po' il nostro codice.
‫Allora cos'è?
‫Perché è successo?
‫E perché alcuni nodi funzione richiedono pin di esecuzione e altri no?
‫Bene, tutto si riduce a qualcosa chiamato effetto collaterale.
‫Allora, qual è un effetto collaterale?
‫In sostanza, un effetto collaterale è quando una funzione ha una sorta di effetto osservabile dopo che è stata
‫eseguita.
‫Ora, cosa intendo con questo?
‫Diamo un'occhiata ad alcuni esempi di funzioni con effetti collaterali in modo da poter capire
‫che stampa la stringa di stampa dopo l'esecuzione.
‫Stampa stringa è abbastanza chiaro che è successo qualcosa perché ora c'è una stringa sullo schermo.
‫Puoi vedere che c'è un impulso di aggiunta di stringa che ha chiaramente un effetto osservabile perché
‫all'improvviso la cosa a cui hai aggiunto l'impulso vola via nella distanza impostata per le munizioni non ha effetto
‫osservabile perché dopo aver impostato le munizioni, il valore in quella variabile è cambiato.
‫Ora a questo punto potresti chiederti, beh, sicuramente ogni funzione ha un effetto osservabile.
‫Altrimenti, che senso ha?
‫Beh, non proprio.
‫Ci sono cose come funzioni pure.
‫Ciò che è una funzione pura è fondamentalmente una funzione senza effetti collaterali.
‫Tuttavia, ha valori di ritorno.
‫Quindi ci sono valori che escono da quella funzione.
‫E questo è l'intero scopo della funzione è calcolare e darci quei valori.
‫Quindi, di nuovo, diamo un'occhiata ad alcuni esempi perché questo lo renderà molto più chiaro.
‫Ottieni munizioni.
‫Questa è una pura funzione.
‫Non ha effetti collaterali perché puoi ottenere munizioni tutte le volte che vuoi.
‫E a meno che tu non faccia qualcosa con il valore che ne hai ricavato, il tuo programma, il tuo
‫gioco non sarà diverso.
‫Puoi semplicemente continuare a prendere munizioni tutto il tempo, durante tutto il gioco e nulla sarà
‫osservabile di diverso nel tuo gioco.
‫Diventa vettore in avanti attivo.
‫Questo è un altro in cui puoi ottenerlo tutte le volte che vuoi.
‫Non cambierà nulla finché non fai qualcosa con il valore restituito e tutte queste
‫funzioni matematiche come moltiplica meno maggiore.
‫Tutti questi nodi non hanno effetto sul tuo progetto finché i loro risultati non vengono utilizzati per uno scopo
‫maggiore.
‫Quindi queste sono chiamate funzioni pure e probabilmente puoi vedere che questi sono esattamente i nodi che
‫non avevano pin di esecuzione perché non ne hanno bisogno.
‫Non importa quando corro a prendere munizioni o se lo faccio 50 volte una volta, non
‫importa perché non ha effetti collaterali osservabili.
‫Quindi, come possiamo indicare un progetto che una funzione è pura?
‫Bene, diamo un'occhiata alla mia funzione di test qui.
‫Quindi lo selezionerò nel grafico dell'evento o nel riquadro del mio progetto.
‫E puoi vedere che nel riquadro dei dettagli c'è una casella di controllo etichettata pure.
‫Quindi, se selezioni quella casella di controllo, nota che i modelli di esecuzione sono appena scomparsi.
‫E tutto ciò che abbiamo ora sono gli input e gli output di questa funzione.
‫Ora questa funzione verrà eseguita ogni volta che avremo bisogno dell'output.
‫Quindi, se collego questo output in una stringa di stampa, eseguirà questa funzione prima della stringa di
‫stampa.
‫Quindi ha il risultato in tempo per eseguire la stringa di stampa.
‫Possiamo fare lo stesso con qualsiasi funzione in cui non ci sono effetti collaterali, dove non
‫ci sono effetti osservabili come la nostra funzione ha munizioni.
‫Quindi vorrei sfidarti a trasformare le munizioni in una pura funzione.
‫Quindi selezionalo e imposta quella casella di controllo per renderlo puro.
‫E cosa succede ora al flusso di esecuzione.
‫Quello che attualmente è stato collegato tramite la funzione.
‫Dove va?
‫Metti in pausa il video e prova.
‫Bene.
‫Ben tornato.
‫Quindi selezioniamo ha munizioni, controlleremo la casella di controllo pure e immediatamente vedrai che i pin di
‫esecuzione scompaiono e il flusso di esecuzione che scorreva in precedenza ha munizioni ora passa direttamente alla nostra
‫istruzione branch, che è esattamente quello che vogliamo ora ha le munizioni verranno eseguite non
‫appena verrà eseguita l'istruzione branch per ottenere il valore restituito.
‫Ora una parola di cautela usa questa casella di controllo pura solo quando sei sicuro che una funzione non abbia effetti collaterali.
‫Casi comuni e casi d'uso per questo sono quando la tua funzione sta semplicemente cercando di calcolare un valore come
‫ha munizioni.
‫Ed è per questo che questa funzione non segue la convenzione di avere un nome di verbo perché non sta facendo
‫qualcosa, sta ottenendo qualcosa o sta rispondendo a una domanda.
‫In questo caso, la domanda è ha munizioni.
‫E in effetti, potremmo anche mettere un piccolo punto interrogativo nella nostra funzione, nominando qualcosa che puoi
‫fare in Blueprint che non puoi fare in C++, il che ci permette di vedere che, sì, questa funzione sta rispondendo a
‫una domanda.
‫Non sta cercando di fare qualcosa.
‫Così spesso la distinzione tra funzioni pure e non pure è se si adatta a un verbo o
‫se si adatta a una domanda.
‫Quindi, per rivedere, diamo un'occhiata al nostro glossario.
‫Un effetto collaterale è un effetto osservabile di una funzione che abbiamo visto e abbiamo visto esempi di tali funzioni.
‫E una funzione pura è una funzione senza effetti collaterali, come queste funzioni di ricezione o di risposta
‫alle domande.
‫Questo è tutto per questa lezione.
‫Vedrò nel prossimo.