Это не имеет особого смысла, поскольку циклы C-ish являются просто структурами управления выполнением.Нет такого типа, который, как вы можете сказать, в общем случае имеют циклы.
Из ваших примеров мне кажется, что вы просите о возможности добавления простых встроенных функций без необходимости фактически идти куда-то еще и записыватьполная функция со своим именем и еще много чего.Они называются лямбда .
Если вы используете C, я бы предложил просто создавать небольшие функции (возможно, даже макросы), которые собирают и возвращают нужный вам тип.
Если вы используете C ++, в стандартной библиотеке есть некоторые вещи в <algorithm>
и <functional>
, которые могут вас заинтересовать. Для вашего данного примера, я думаю, find_if()
сделает то, что вы ищете,Обычно этот материал больше подходит для PITA, чем он того стоит.Вы должны создать полноценный объект предиката, чтобы сделать это, что намного больше кода и работы, чем просто создание вашей однострочной функции было бы в первую очередь.
Boost добавляет поддержку лямбда в C ++, и следующий стандарт должен правильно добавить его в язык.
Большинство функциональных языков поддерживают лямбда-выражения, но обычно они не используют синтаксис C, подобный этому.