‫Qu'est-ce qu'une fonction pure ?
‫Eh bien, une fonction pure ressemble à ceci, nous avons une fonction, donc au lieu d'une boîte que nous avions auparavant d'objets
‫de toutes ces fonctionnalités, pensez plutôt à cela comme à une simple fonction.
‫Et disons que nous lui donnons une liste contenant un, deux et trois.
‫Si nous donnons cette entrée à cette fonction, ce à quoi nous nous attendrions avec une fonction pure, c'est qu'il se passe quelque
‫chose à cette entrée qui entraîne à chaque fois la même chose.
‫Alors disons que nous multiplions cela par deux, nous recevrions deux, quatre et six.
‫Or, une fonction pure a deux règles.
‫La première est que, étant donné la même entrée, elle renverra toujours la même sortie, c'est-à-dire que chaque fois que nous donnons un, deux et
‫trois à cette liste, nous la donnons à une fonction que nous créons.
‫Il doit toujours renvoyer la même sortie.
‫Donc, si j'exécute cette fonction des millions de fois avec la même entrée, cela devrait donner la même sortie.
‫Et le deuxième point est que cette idée de fonction ne devrait pas produire d'effets secondaires.
‫Quels sont les effets secondaires ?
‫Les effets secondaires sont des choses qui fonctionnent.
‫Cela affecte-t-il le monde extérieur ?
‫Par exemple, si je devais imprimer quelque chose à l'intérieur de cette fonction, cela affecterait le monde extérieur, n'est-ce pas ?
‫Parce que j'imprime quelque chose sur un écran.
‫L'écran est le monde extérieur.
‫Ou, par exemple, si cette fonction touchait une variable qui vivait en dehors d'une portée différente, c'est
‫un effet secondaire.
‫Regardons.
‫Un code pour comprendre un peu plus ce concept.
‫Disons que nous avions une fonction et que cette fonction se multipliera.
‫Par à une liste, disons simplement un allié, qui sera notre liste, et ici ce que nous voulons faire est
‫de boucler sur l'élément.
‫À la fin.
‫Et puis chaque élément que nous voulons multiplier et ajouter à une nouvelle liste.
‫Créons donc une nouvelle liste qui sera une liste vide.
‫Et ici, nous dirons nouvelle liste, ajoutez un point.
‫Et le faire en multipliant par deux.
‫Et puis enfin, à la fin de cette fonction, on veut retourner la nouvelle liste.
‫Essayons ça.
‫Si je dis multipliez par deux et donnez-lui un, deux, trois et imprimons.
‫Ici, la sortie.
‫Si je clique, cours.
‫J'en reçois deux, quatre, six.
‫Est-ce une fonction pure, réfléchissons-y.
‫La première règle étant donnée la même entrée, c'est-à-dire un, deux et trois.
‫Il renverra toujours la même sortie, peu importe le nombre de fois que je l'exécute, cela me donnera
‫toujours la même sortie.
‫Donc, OK, nous avons réussi le premier test.
‫Qu'en est-il du deuxième test selon lequel il ne produit aucun effet secondaire ?
‫Cela produit-il des effets secondaires ?
‫Est-ce que cela touche quelque chose dans le monde extérieur ?
‫Pensez-y.
‫Non, il n'écrit rien dans le monde extérieur qui compte pour cette fonction.
‫Parce que tout est contenu ici.
‫Si, par exemple, au lieu d'avoir print ici, nous avons simplement print.
‫Et ici.
‫Si je clique, cours.
‫Nous obtenons le même résultat, mais cela a-t-il des effets secondaires ?
‫Eh bien, oui, il le fait.
‫Il interagit avec le monde extérieur, qui est la déclaration d'impression.
‫La déclaration d'impression me dit, hé, je vais imprimer sur n'importe quel écran de cette machine.
‫Dans notre cas, cela va s'imprimer ici, mais nous ne savons pas vraiment ce que fait l'instruction print
‫car elle interagit avec l'écran de ce côté.
‫Donc ça.
‫Effets secondaires, nous donnons le contrôle à l'impression, mais nous ne savons pas ce que l'impression va faire.
‫Un autre exemple que je peux vous donner.
‫Est-ce que cela se passe si nous avons ici une nouvelle liste que nous définissons réellement à l'extérieur ?
‫Ainsi.
‫Pour que nous ayons une nouvelle liste comme celle-ci, si je clique sur exécuter.
‫J'arrive toujours à quatre, six, mais cela a-t-il des effets secondaires ?
‫Eh bien, oui, il le fait.
‫Il interagit avec le monde extérieur et ce qu'il y a en dehors de ce monde d'une fonction dont
‫on se souvient, c'est la portée, eh bien, il interagit avec cette nouvelle liste.
‫Il arrive à cette nouvelle liste.
‫Donc, si un programmeur arrive et peut-être avant d'exécuter cette fonction, nous décidons de dire nouvelle liste.
‫Nous la changeons en une chaîne vide.
‫Eh bien, quand j'exécute cette fonction.
‫J'obtiens une erreur car maintenant cette nouvelle liste est un objet chaîne.
‫Ainsi, la nouvelle liste qui vit dans le monde extérieur de cette fonction peut être modifiée par un autre développeur ou par
‫un programme et nous ne le saurons pas.
‫Et lorsque nous exécutons cette fonction, cela va nous donner une erreur.
‫Il a un effet secondaire.
‫Donc idéalement, nous contiendrons nos fonctions.
‫Et rendez-les purs, parce que, comme vous pouvez le voir, nous n'aurons jamais de bogue ou d'erreur dans notre code à moins que nous ayons
‫écrit quelque chose de mal ici, mais parce que nous ne nous soucions pas du monde extérieur, parce que
‫tout ce que nous donner comme entrée va toujours produire une bonne sortie, ça va être pur.
‫Maintenant, il est difficile de vraiment comprendre pourquoi il s'agit d'un concept si puissant sans avoir un peu d'expérience sur le lieu
‫de travail.
‫Mais laissez-moi juste vous dire ceci, que lorsque vous avez des fonctions pures.
‫Vous avez moins de code bogué, vous pouvez mieux tester votre code.
‫Il est plus facile de comprendre votre code et dans l'ensemble.
‫Vous avez les avantages de ne pas avoir différentes parties de votre code, de se toucher et de
‫s'affecter, ce qui rend votre vie de programmeur tellement plus facile.
‫Donc cette idée de fonctions pures est vraiment importante.
‫Mais la seule chose que je veux que vous reteniez de ceci, c'est que les fonctions pures sont plus une ligne
‫directrice qu'un absolu.
‫Il est impossible d'avoir des fonctions pures partout parce que si une fonction n'affecte pas du tout le monde extérieur,
‫eh bien, nous n'aurions pas de programmes.
‫Nous ne serions pas en mesure d'afficher des choses.
‫Nous ne serions pas en mesure de sauvegarder des éléments tels que notre profil de jeu.
‫Il est donc impossible d'avoir des fonctions pures partout.
‫Cependant, quand vous le pouvez partout où vous le pouvez, la programmation fonctionnelle nous apprend que vos fonctions sont bonnes.
‫Essayez de créer des fonctions pures et n'ayez que quelques fonctions non pures qui interagissent peut-être avec le monde extérieur
‫vers lesquelles nous pouvons revenir chaque fois que nous avons des bogues dans notre code, car ce sont
‫très probablement celles qui vont avoir des bogues puis des fonctions pures comme ceci pour finaliser notre concept de programmation fonctionnelle.
‫Si, par exemple, c'était notre assistant des vidéos précédentes avec programmation fonctionnelle, nous aurions
‫un objet assistant.
‫Ou le dictionnaire Wizzard qui avait un nom.
‫Disons Marlon.
‫Et le pouvoir.
‫De 50.
‫Et au lieu de les contenir dans une classe, j'aurais différentes méthodes telles que l'attaque.
‫Et ce ne serait pas une méthode, ce serait une fonction car elle ne vit pas à l'intérieur d'une classe.
‫En programmation fonctionnelle, ils disent, hé, nous n'avons pas besoin de combiner des données avec des
‫fonctions, gardons-les séparés, créons simplement des fonctions pures qui peuvent être transmises comme un caractère.
‫Et de cette façon, nous gardons ces deux choses séparées afin que nous puissions nous concentrer sur les fonctions pures et nous pouvons nous concentrer
‫sur les données, c'est donc là que se trouve la différence.
‫En fin de compte, il s'agit d'essayer de garder notre manteau propre et d'éviter les bugs dans notre manteau, un gros
‫problème que les programmeurs ont tout le temps.
‫C'est donc juste une façon différente de penser.
‫Apprenons-en plus dans la prochaine vidéo.