Maison >développement back-end >C++ >Comment une expression lambda capture-t-elle les variables externes ?

Comment une expression lambda capture-t-elle les variables externes ?

WBOY
WBOYoriginal
2024-04-25 17:24:01567parcourir

Une expression lambda capture une variable externe en créant une référence à la variable dans la portée externe. Les étapes spécifiques incluent : Lorsqu'une expression lambda utilise une variable externe, elle capture la variable. Les expressions Lambda ne peuvent capturer que des variables locales dans des fonctions externes, pas des variables globales. Si la variable externe est réaffectée, la référence capturée dans l'expression lambda est également mise à jour.

lambda 表达式如何捕获外部变量?

Comment les expressions lambda capturent les variables externes

Les expressions lambda sont des fonctions anonymes qui peuvent accéder aux variables dans la portée englobante. Lorsqu'une expression lambda capture une variable externe, elle crée une référence à cette variable.

Syntaxe

lambda 参数列表: 表达式

Capturer des variables externes

Si une expression lambda utilise une variable déclarée dans une portée externe, elle sera capturée.

# 定义外部函数
def outer_function():
    outer_variable = 10

    # 定义 lambda 表达式,捕获 outer_variable
    my_lambda = lambda: outer_variable

# 调用 lambda 表达式,获取外部变量
result = my_lambda()
print(result)  # 输出: 10

Notes

Les expressions lambda ne peuvent capturer que des variables locales dans des fonctions externes, pas des variables globales. De plus, si la variable externe est réaffectée, la référence capturée dans l'expression lambda est également mise à jour.

Exemple pratique

# 使用 lambda 表达式对列表中的数字进行排序
numbers = [4, 2, 8, 1, 6]

# 根据数字的平方对列表进行排序
sorted_numbers = sorted(numbers, key=lambda x: x**2)

# 打印排序后的列表
print(sorted_numbers)  # 输出: [1, 4, 2, 6, 8]

Dans cet exemple, l'expression lambda capture le carré de x 变量,并计算 x dans la portée externe comme base de tri.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn