299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
||||||
1 | ||||||
Не получается использовать лямбда функцию в качестве аргумента в другой функции15.04.2020, 16:15. Показов 4488. Ответов 17
Метки нет (Все метки)
привет
помогите пожалуйста разобраться с лямбда функциями.
0
|
15.04.2020, 16:15 | |
Ответы с готовыми решениями:
17
Лямбда-функция в качестве аргумента функции Лямбда выражение в качестве передаваемого аргумента функции Использование лямбда выражения в качестве аргумента функции Функция в качестве аргумента другой функции |
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
15.04.2020, 16:18 | 2 |
Сообщение было отмечено pcmax как решение
Решение
У тебя нет функции, принимающей в качестве аргумента другую функцию/функтор.
Что ты хотел тут сделать, словами объясни?
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
15.04.2020, 16:25 | 3 |
Сообщение было отмечено pcmax как решение
Решение
ты вообще понимаешь, что ты пытаешься сделать?
у тебя у функции: тип параметра - int вот с какого перепугу ты решил, что в неё можно запихивать лямбду? ты сделать то что пытаешься вообще?
1
|
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
||||||
15.04.2020, 16:35 [ТС] | 4 | |||||
так это лямбда выражение. это же не функция, несмотря на то что я так указал в теме. я понимаю это как выражение.
я же могу сделать так?
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
||||||
15.04.2020, 16:38 | 5 | |||||
Сообщение было отмечено politoto как решение
Решение
так что ли?
2
|
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
|||||||||||
15.04.2020, 16:51 [ТС] | 6 | ||||||||||
хочу понять как работает.
похоже. щас испытаю Добавлено через 6 минут вопрос: зачем return? Добавлено через 4 минуты и как работает захват?
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
15.04.2020, 17:15 | 7 |
Сообщение было отмечено pcmax как решение
Решение
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
15.04.2020, 17:21 | 8 |
Затем, что твоя функция
foo принимает аргумент типа int .Поэтому результатом выражения, в котором этот аргумент вычисляется, должен быть объект типа int (или неявно кастится к нему).У тебя какое то не правильное понимание лямбды. Если грубо - то это просто функтор(объект с оператором вызова operator()). Этот код даже не скомпилируется. О каком выводе идет речь?
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
15.04.2020, 17:24 | 9 |
это не скомпилируется.
ты написал бред. 1. во-первых, не хватает точки с запятой: [&a](int a){a=a+4;}; 2. во-вторых, это что за бред? [&a](int a){a=a+4;} почему у тебя аргумент функтора и имя захваченной переменной совпадают? хочешь писать код, который запутает и тебя, и людей? 3. в-третьих. ты объявил безымяную лямбду - временный объект. существование которого вообще никак не сказывается на работе программы. 4. ты нигде не запускаешь лямбду на выполнение. а значит она никак не изменяет состояние переменной если бы ты не забыл точку-с-запятой, и довел код до компилябельного состояния, тогда в консоль высветилось бы число 11. /ps: как можно было в одной маленькой строчке допустить столько косяков ??? это - талант!
2
|
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
||||||
15.04.2020, 17:57 [ТС] | 10 | |||||
ребята, вы чего? кого я хочу запутать? я блин разобраться не могу. зашел к вам. а вы чего говорите!
Добавлено через 1 минуту это просто пример. абстракция. код в любом случае будет не рабочий, потому что я не знаю как писать. я не понимаю лямбду в плюсах. Добавлено через 6 минут давайте пожалуйста попорядку. функтор-это объект который ведет себя как функция .
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
15.04.2020, 18:07 | 11 |
тогда не "примеры и абстракции" приводи, а формулируй техническое задание.
То есть о функциях, возвращающих не void ты не слышал?Если у лямбды не указывать тип возвращаемого значения, то он будет выведен автоматически.
1
|
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
||||||
15.04.2020, 18:12 [ТС] | 12 | |||||
тогда почему без return не работает?
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
||||||
15.04.2020, 18:19 | 13 | |||||
Как раз потому, что из
void никак не получить int .Это всё равно что:
1
|
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
||||||
15.04.2020, 18:54 [ТС] | 14 | |||||
return чей? лябмда или foo? если лямбда тогда почему не ?
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
||||||
15.04.2020, 19:04 | 15 | |||||
а я постом выше о чём писал?
Добавлено через 5 минут Аналог с функтором:
1
|
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
|
||||||
15.04.2020, 21:53 [ТС] | 16 | |||||
1
|
Вездепух
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,066
|
||||||
15.04.2020, 21:59 | 17 | |||||
Можно и короче
[]{}() - вполне легальное выражение в С++, как впрочем и [](){} и [](){}() .
2
|
1 / 1 / 0
Регистрация: 16.04.2020
Сообщений: 1
|
|
16.04.2020, 07:33 | 18 |
Имена просто разные юзай, да и всё:)
1
|
16.04.2020, 07:33 | |
16.04.2020, 07:33 | |
Помогаю со студенческими работами здесь
18
Функция в качестве аргумента другой функции по умолчанию Передача функции в качестве аргумента другой функции Как передать функции указатель на функцию в качестве аргумента? как передать функции в качестве аргумента указатель на функцию описанной в другом классе? Создать функцию, имеющую два аргумента и возвращающую в качестве аргумента число из отрезка [a,b] Передача аргумента в функцию (Лямбда выражения) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |