Запитання з тегом «lambda»

НЕ ВИКОРИСТОВУЙТЕ для обслуговування AWS (використовуйте [aws-lambda] для цих питань!) Лямбди - це анонімні функції або закриття в мовах програмування, таких як Lisp, C #, C ++, Lua, Python, Ruby, JavaScript або Java. (Також лямбда-вираз.)

7
Чому filter () після flatMap () "не зовсім" ледачий у потоках Java?
У мене є такий зразок коду: System.out.println( "Result: " + Stream.of(1, 2, 3) .filter(i -> { System.out.println(i); return true; }) .findFirst() .get() ); System.out.println("-----------"); System.out.println( "Result: " + Stream.of(1, 2, 3) .flatMap(i -> Stream.of(i - 1, i, i + 1)) .flatMap(i -> Stream.of(i - 1, i, i + 1)) .filter(i …

6
C ++ 11 std :: встановити функцію порівняння лямбда-сигналу
Я хочу створити std::setспеціальну функцію порівняння. Я міг би визначити це як клас з operator(), але я хотів насолодитися можливістю визначати лямбда-де, де він використовується, тому я вирішив визначити лямбда-функцію в списку ініціалізації конструктора класу, який є std::setчленом. Але я не можу зрозуміти тип лямбди. Перш ніж продовжувати, ось приклад: …


5
Як отримати адресу функції C ++ лямбда у самій лямбда?
Я намагаюся розібратися, як отримати адресу лямбда-функції всередині себе. Ось зразок коду: []() { std::cout << "Address of this lambda function is => " << ???? }(); Я знаю, що я можу зафіксувати лямбда в змінній і надрукувати адресу, але хочу зробити це на місці, коли виконується ця анонімна функція. …
53 c++  c++11  lambda  c++14  c++17 

4
Чому тип повернення лямбда не перевіряється під час компіляції?
Використовуваний посилання методу має тип повернення Integer. Але несумісне Stringдозволено в наступному прикладі. Як виправити withдекларацію методу, щоб забезпечити безпеку типу посилання методу без ручного введення? import java.util.function.Function; public class MinimalExample { static public class Builder<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; } static <T> Builder<T> …

6
Чи є спосіб оголосити лямбда C # і негайно зателефонувати?
Можна оголосити лямбда-функцію і негайно викликати її: Func<int, int> lambda = (input) => { return 1; }; int output = lambda(0); Мені цікаво, чи можна це зробити в одному рядку, наприклад, щось подібне int output = (input) => { return 1; }(0); яка дає помилку компілятора "Ім'я методу очікується". Кастинг …
29 c#  lambda 

3
Чому компіляція нормальна, коли я використовую метод Invoke, а не гаразд, коли я повертаю Func <int, int> безпосередньо?
Я не розумію цього випадку: public delegate int test(int i); public test Success() { Func&lt;int, int&gt; f = x =&gt; x; return f.Invoke; // &lt;- code successfully compiled } public test Fail() { Func&lt;int, int&gt; f = x =&gt; x; return f; // &lt;- code doesn't compile } Чому компіляція …
28 c#  lambda  delegates 

2
Коли "це" фіксується лямбда, чи потрібно це явно використовувати?
Я знайшов приклади, що вловлюють thisу лямбді явно, використовують це; наприклад: capturecomplete = [this](){this-&gt;calstage1done();}; Але, мабуть, це також можна використовувати неявно; наприклад: capturecomplete = [this](){calstage1done();}; Я перевірив це в g ++, і він склав. Це стандарт C ++? (і якщо так, то яка версія) чи це якась форма розширення?

1
Чому я можу оголосити дочірню змінну з тим самим іменем, що і змінну в батьківській області?
Нещодавно я написав код, коли ненавмисно повторно використав ім'я змінної як параметр дії, оголошеної в межах функції, яка вже має однойменну змінну. Наприклад: var x = 1; Action&lt;int&gt; myAction = (x) =&gt; { Console.WriteLine(x); }; Коли я помітив дублювання, я був здивований, побачивши, що код складено та працює бездоганно, що …

3
Різниця в поведінці змінної функції лямбда від посилання на глобальну змінну
Я виявив, що результати компіляторів відрізняються, якщо я використовую лямбда, щоб захопити посилання на глобальну змінну із змінним ключовим словом, а потім змінити значення у функції лямбда. #include &lt;stdio.h&gt; #include &lt;functional&gt; int n = 100; std::function&lt;int()&gt; f() { int &amp;m = n; return [m] () mutable -&gt; int { m …


3
Значення замикання лямбда можуть бути передані як референтні параметри rvalue
Я виявив, що lvalueлямбда-закриття завжди можна передавати як rvalueпараметри функції. Дивіться наступну просту демонстрацію. #include &lt;iostream&gt; #include &lt;functional&gt; using namespace std; void foo(std::function&lt;void()&gt;&amp;&amp; t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` function …

3
Перевантажуйте лямбда-функцію
Як перевантажити просту функцію локальної лямбда? SSE вихідної проблеми: #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, {'b', 1}, {'c', …

1
Чи гарантовано незаймана лямбда буде порожньою за стандартом?
Я шукаю спосіб ідентифікувати порожні (без захоплення) лямбда від інших лямбда в функції шаблону. Зараз я використовую C ++ 17, але мені цікаво і відповідей на C ++ 20. Мій код виглядає приблизно так: template&lt;typename T&gt; auto func(T lambda) { // The aguments of the lambdas are unknown if constexpr …
12 c++  lambda  c++17  c++20 

1
Чому параметр типу сильніше, ніж параметр методу
Чому це public &lt;R, F extends Function&lt;T, R&gt;&gt; Builder&lt;T&gt; withX(F getter, R returnValue) {...} тоді суворіші public &lt;R&gt; Builder&lt;T&gt; with(Function&lt;T, R&gt; getter, R returnValue) {...} Це подальше дослідження на тему Чому тип повернення лямбда не перевіряється під час компіляції . Я виявив , використовуючи метод , withX()як .withX(MyInterface::getLength, "I am …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.