Fonctions lambda, partie 2
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 55 sur 78.
Une lambda sur une seule ligne peut choisir son résultat à l’aide de l’opérateur ternaire, value_if_true if condition else value_if_false :
var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # AdultPour plus de deux cas, enchaîne un deuxième ternaire après else, ou écris la lambda sous forme de bloc avec if et elif :
var grade = func(score):
if score == 100:
return "Perfect"
elif score >= 60:
return "Pass"
return "Fail"
print(grade.call(75)) # PassComme une lambda est une valeur, tu peux la passer à une fonction. Déclare le paramètre avec le type Callable et exécute-la avec call() :
func apply_twice(fn: Callable, value):
return fn.call(fn.call(value))print(apply_twice(func(n): return n + 3, 1)) # 7Une fonction nommée peut être passée de la même manière : écris son nom sans parenthèses, comme dans apply_twice(double, 5).
Les méthodes intégrées prennent également des fonctions. sort_custom() trie un tableau à l’aide d’une fonction lambda qui reçoit deux éléments et renvoie true lorsque le premier doit venir en premier :
var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]Une lambda peut lire les variables locales qui l’entourent, mais elle en copie les valeurs au moment de sa création. Modifier une telle variable par la suite n’a aucun effet sur la lambda, et lui affecter une valeur à l’intérieur de la lambda ne modifie pas la variable à l’extérieur.
Défi
FacileLe programme lit un nombre entier. Créez une fonction lambda et stockez-la dans une variable nommée categorize_number. Elle prend un nombre et renvoie :
Positivesi le nombre est supérieur à0Zerosi le nombre est égal à0Negativesi le nombre est inférieur à0
Appelez-la avec le nombre lu et affichez le résultat. Pour l’entrée 10, la sortie est :
PositiveEssayez vous-même
extends Node
func _ready():
var number := int(OS.read_string_from_stdin())
# Créez la fonction lambda categorize_number ici
# Appelez-la avec number et affichez le résultat
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne