lambda表达式是什么
lambda表达式:一个可调用的代码单元,可以理解成匿名的内联函数。
lambda表达式的具体形式包含捕获列表(capture list)、返回类型(return type)、参数列表(parameter list)、函数体(function body)。
捕获列表是lambda表达式所在函数中定义的局部变量列表,通常为空。返回类型、参数列表、函数体都和普通函数中一样定义。
lambda表达式代码形式:[ capture list ]( parameter list ) -> return type { function body };
要点1:lambda必须使用尾置返回来指定类型。尾置返回是跟在形参列表后,加上-> type表示。任何函数的定义都能使用尾置返回类型,但一般用在返回类型比较复杂的函数上比较有效,例如返回数组指针等。
要点2:lambda可以忽略指定返回类型和参数列表,但必须包含函数体和捕获列表。形如:[ ]{ return 2 }; 并且调用形式和普通函数调用一样。
捕获列表分为显式捕获和隐式捕获
显式捕获形式
ex1
隐式捕获形式
ex2
要点3:如果想修改一个被捕获的变量的值可以使用mutable关键字。
ex3