C++
C#
Dart
F#
JavaScript
Kotlin
Python
Rust
#include <iostream> int main() { // определяем лямбда-выражение auto sum { [](int a, int b){return a + b;} }; // вызываем лямбда-выражение std::cout << sum(10, 23) << std::endl; // 33 // присваиваем его результат переменной int result { sum(1, 4)}; std::cout << result << std::endl; // 5 }
Лямбда-выражения в качестве аргументов функций
#include <iostream> void do_operation(int a, int b, int (*op)(int, int)) { std::cout << op(a, b) << std::endl; } int main() { do_operation(10, 4, [](int a, int b) {return a + b;}); // 14 do_operation(10, 4, [](int a, int b) {return a - b;}); // 6 do_operation(10, 4, [](int a, int b) {return a * b;}); // 40 }
Возвращение лямбда-выражения
#include <iostream> int(*select(int))(int, int); int main() { int(*action)(int, int) {select(1)}; // сложение std::cout << action(8, 5) << std::endl; // 13 action = select(2); // вычитание std::cout << action(8, 5) << std::endl; // 3 action = select(3); // умножение std::cout << action(8, 5) << std::endl; // 40 } int(*select(int choice))(int, int) { // возвращаем нужную функцию в зависимости от choice switch (choice) { case 2: return [](int x, int y) {return x - y;}; case 3: return [](int x, int y) {return x * y;}; default: return [](int x, int y) {return x + y;}; } }
// определяем лямбда-выражение var sum = (int a, int b) => a + b; // вызываем лямбда-выражение Console.WriteLine(sum(10, 23)); // 33 // присваиваем его результат переменной int result = sum(1, 4); Console.WriteLine(result); // 5
Лямбда-выражения в качестве аргументов функций
DoOperation(10, 4, (a, b)=>a + b); // 14 DoOperation(10, 4, (a, b) => a - b); // 6 DoOperation(10, 4, (a, b) => a * b); // 40 void DoOperation(int a, int b, Operation op) { Console.WriteLine(op(a, b)); } delegate int Operation(int a, int b);
Возвращение лямбда-выражения
var action = Select(1); // сложение Console.WriteLine(action(8, 5)); // 13 action = Select(2); // вычитание Console.WriteLine(action(8, 5)); // 3 action = Select(3); // умножение Console.WriteLine(action(8, 5)); // 40 Operation Select(int choice) { // возвращаем нужную функцию в зависимости от choice switch (choice) { case 2: return (x, y) => x - y; case 3: return (x, y) => x * y; default: return (x, y) => x + y; } } delegate int Operation(int a, int b);
В Dart формально нет лямбда-выражений, но есть анонимные функцию, которые во многом аналогичны.
void main() { // определяем анонимную функцию var sum = (a, b) => a + b; // вызываем лямбда-выражение print(sum(4, 5)); // 9 }
Лямбда-выражения в качестве аргументов функций
void main() { operation(10, 4, (a, b)=>a + b); // 14 operation(10, 4, (a,b)=>a - b); // 6 operation(10, 4, (a, b) => a * b); // 40 } void operation(int a, int b, Function op) { print(op(a, b)); }
Возвращение лямбда-выражения
void main() { Function action = select(1); // сложение print(action(8, 5)); // 13 action = select(2); // вычитание print(action(8, 5)); // 3 action = select(3); // умножение print(action(8, 5)); // 40 } Function select(int choice) { // возвращаем нужную функцию в зависимости от choice switch (choice) { case 2: return (a, b) => a - b; case 3: return (a, b) => a * b; default: return (a, b) => a + b; } }
// определяем лямбда-выражение let sum = fun a b -> a + b // вызываем лямбда-выражение printfn "%d" (sum 10 23) // 33 // присваиваем его результат переменной let result = sum 1 4 printfn $"{result}" // 5
Лямбда-выражения в качестве аргументов функций
let operation x y func = printfn "%d" (func x y) operation 10 4 (fun x y -> x+y) // 14 operation 10 4 (fun x y -> x-y) // 6 operation 10 4 (fun x y -> x*y) // 40
Возвращение лямбда-выражения
let select choice = // возвращаем нужную функцию в зависимости от choice match choice with | 2 -> fun x y -> x - y | 3 -> fun x y -> x * y | _ -> fun x y -> x + y let mutable action = select 1 // сложение printfn "%d" (action 8 5) // 13 action <- select 2 // вычитание printfn "%d" (action 8 5) // 3 action <- select 3 // умножение printfn "%d" (action 8 5) // 40
В JavaScript лямбда-выражения формально называются стрелочными функциями (arrow functions). Определение лямбда-выражений
// определяем лямбда-выражение const sum = (a, b)=> a + b; // вызываем лямбда-выражение console.log(sum(10, 23)); // 33 // присваиваем его результат переменной const result = sum(1, 4); console.log(result); // 5
Лямбда-выражения в качестве аргументов функций
function operation(a, b, op) { console.log(op(a, b)); } operation(10, 4, (a, b)=> a + b); // 14 operation(10, 4, (a, b)=> a - b); // 6 operation(10, 4, (a, b)=> a * b); // 40
Возвращение лямбда-выражения
function select(choice) { // возвращаем нужную функцию в зависимости от choice switch (choice) { case 2: return (a, b) => a - b; case 3: return (a, b) => a * b; default: return (a, b) => a + b; } } let action = select(1); // сложение console.log(action(8, 5)); // 13 action = select(2); // вычитание console.log(action(8, 5)); // 3 action = select(3); // умножение console.log(action(8, 5)); // 40
Определение лямбда-выражений:
fun main() { // определяем лямбда-выражение val sum = {a:Int, b:Int -> a + b} // вызываем лямбда-выражение println(sum(4, 5)) // 9 }
Лямбда-выражения в качестве аргументов функций
fun main() { operation(10, 4, {a, b -> a + b}) // 14 operation(10, 4, {a, b -> a - b}) // 6 operation(10, 4, {a, b -> a * b}) // 40 } fun operation(a: Int, b: Int, op: (Int, Int)->Int) { println(op(a, b)) }
Возвращение лямбда-выражения
fun main() { var action = select(1) // сложение println(action(8, 5)) // 13 action = select(2) // вычитание println(action(8, 5)) // 3 action = select(3) // умножение println(action(8, 5)) // 40 } fun select(choice: Int): (Int,Int)->Int { // возвращаем нужную функцию в зависимости от choice return when (choice) { 2 -> {a:Int, b:Int -> a - b} 3 -> {a:Int, b:Int -> a * b} else -> {a:Int, b:Int -> a + b} } }
Определение лямбда-выражений
# определяем лямбда-выражение sum = lambda a, b: a + b # вызываем лямбда-выражение print(sum(10, 23)); # 33 # присваиваем его результат переменной result = sum(1, 4) print(result); # 5
Лямбда-выражения в качестве аргументов функций
def operation(a, b, op): print(op(a, b)) operation(10, 4, lambda a, b: a + b); # 14 operation(10, 4, lambda a, b: a - b); # 6 operation(10, 4, lambda a, b: a * b); # 40
Возвращение лямбда-выражения
def select(choice): # возвращаем нужную функцию в зависимости от choice match choice: case 2: return lambda a,b: a - b case 3: return lambda a,b: a * b case _: return lambda a,b: a + b action = select(1) # сложение print(action(8, 5)) # 13 action = select(2) # вычитание print(action(8, 5)) # 3 action = select(3) # умножение print(action(8, 5)) # 40
В Rust лямбда-выражения формально называются анонимными функциями. Определение лямбда-выражений
fn main(){ // определяем лямбда-выражение let sum = |a, b| a + b; // вызываем лямбда-выражение println!("{}", sum(10, 23)); // 33 // присваиваем его результат переменной let result = sum(1, 4); println!("{}", result); // 5 }
Лямбда-выражения в качестве аргументов функций
fn operation(a: i32, b: i32, op: fn(i32, i32) -> i32) { println!("{}", op(a, b)); } fn main(){ operation(10, 4, |a, b| a + b); // 14 operation(10, 4, |a, b| a - b); // 6 operation(10, 4, |a, b| a * b); // 40 }
Возвращение лямбда-выражения
fn select(choice: i32)-> fn(i32, i32)->i32 { // возвращаем нужную функцию в зависимости от choice return match choice { 2 => |a, b| a - b, 3 => |a, b| a * b, _ => |a, b| a + b }; } fn main(){ let mut action = select(1); // сложение println!("{}", action(8, 5)); // 13 action = select(2); // вычитание println!("{}", action(8, 5)); // 3 action = select(3); // умножение println!("{}", action(8, 5)); // 40 }