Сообщение Re[6]: Try из библиотеки LanguageExt.Core от 18.01.2022 1:43
Изменено 18.01.2022 2:03 Разраб
Re[6]: Try из библиотеки LanguageExt.Core
Здравствуйте, samius, Вы писали:
S>Ниже пример того, что в замыкании участвует именно общая переменная, а не значение на момент определения замыкания.
да, тупанул, действительно сложнее реализовать именно поведение лямбды
что в ILSpy выглядит
Получается через лямбда-синтаксис выразить лямбду невозможно?
S>Ниже пример того, что в замыкании участвует именно общая переменная, а не значение на момент определения замыкания.
да, тупанул, действительно сложнее реализовать именно поведение лямбды
using static System.Console;
var x = 42;
Action<int> closure = a => { WriteLine("closure = {0}", a + x); };
Action<int> lambda = Lambda(x);
closure(5);
lambda(5);
x = 11;
closure(5);
lambda(5);
Action<int> Lambda(int a) =>
x => { WriteLine("lambda = {0}", x + a); };
что в ILSpy выглядит
int x = 42;
Action<int> closure = delegate(int a)
{
Console.WriteLine("closure = {0}", a + x);
};
Action<int> lambda = Lambda(x);
closure(5);
lambda(5);
x = 11;
closure(5);
lambda(5);
static Action<int> Lambda(int a)
{
return delegate(int x)
{
Console.WriteLine("lambda = {0}", x + a);
};
}
closure = 47
lambda = 47
closure = 16
lambda = 47
Получается через лямбда-синтаксис выразить лямбду невозможно?
Re[6]: Try из библиотеки LanguageExt.Core
Здравствуйте, samius, Вы писали:
S>Ниже пример того, что в замыкании участвует именно общая переменная, а не значение на момент определения замыкания.
да, тупанул, действительно сложнее реализовать именно поведение лямбды
что в ILSpy выглядит
Получается через лямбда-синтаксис выразить лямбду невозможно?
S>Ниже пример того, что в замыкании участвует именно общая переменная, а не значение на момент определения замыкания.
да, тупанул, действительно сложнее реализовать именно поведение лямбды
using static System.Console;
var x = 42;
Action<int> closure = a => { WriteLine("closure = {0}", a + x); };
Action<int> lambda = Lambda(x);
closure(5);
lambda(5);
x = 11;
closure(5);
lambda(5);
Action<int> Lambda(int a) =>
x => { WriteLine("lambda = {0}", x + a); };
что в ILSpy выглядит
using System;
private static void <Main>$(string[] args)
{
int x2 = 42;
Action<int> closure = delegate(int a)
{
Console.WriteLine("closure = {0}", a + x2);
};
Action<int> lambda = Lambda(x2);
closure(5);
lambda(5);
x2 = 11;
closure(5);
lambda(5);
static Action<int> Lambda(int a)
{
return delegate(int x)
{
Console.WriteLine("lambda = {0}", x + a);
};
}
}
closure = 47
lambda = 47
closure = 16
lambda = 47
Получается через лямбда-синтаксис выразить лямбду невозможно?