![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
StatementsBoost , ,
Lazy statementsПримитивы и композитные строительные блоки, представленные ранее, достаточно мощны для строительства довольно сложных конструкций и сооружений. Мы представили ленивые функции и ленивых операторов. Как насчет ленивых заявлений? Во-первых, закуска: Печать всего нечетного содержимого контейнера STL с использованием std::for_each (sample4.cpp):
А? Это действительно C++? Читайте в... Да, это действительно C++. Приведенный выше примерный код максимально приближен к синтаксису C++. Этот стилизованный синтаксис C++ отличается от реального кода C++. Во-первых, если у него есть выпуклость. Во-вторых, блок использует квадратные скобки вместо привычных кудрявых брекетов. Вот еще несколько примеров с аннотациями. Код говорит сам за себя. 1 сообщение блока:
В основном это заявления, разделенные запятыми. Обратите внимание, что в отличие от полуколона C/C++, запятая представляет собой разделитель, помещенный между утверждениями. Это похоже на полуколонный сепаратор Паскаля, а не на полуколонный терминатор C/C++. Например:
Это ошибка. Последнее утверждение не должно иметь запятой. Блоковые заявления могут быть сгруппированы с использованием скобок. Опять же, последнее заявление в группе не должно иметь запятой.
За пределами квадратных скобок блокировочные заявления должны быть сгруппированы. Например:
2 if_ statement: Мы видели заявление if_. Синтаксис это:
3 if_ else_ statement: Синтаксис является
Обратите внимание, что у другого есть префикс точка и следующее подчеркивание: .else_ Пример: Этот код распечатывает все элементы и добавляет " > 5", " == 5" или " < 5" в зависимости от фактического значения элемента:
Обратите внимание, как вложена фраза if_ else. 4 while_ statement: Синтаксис это:
Пример: Этот код уменьшает каждый элемент, пока он не достигнет нуля и не распечатает число на каждом шаге. Новая линия завершает распечатку каждого значения.
5) do_ while_ statement: Синтаксис это:
Опять же, обратите внимание, что в то время как есть префикс точка и следующее подчеркивание: .while_ Пример: Этот код почти такой же, как в предыдущем примере с небольшим поворотом в логике.
6 for_ statement: Синтаксис это:
Это снова почти похоже на C++ для утверждения. Обратите внимание, что init_statement, conditional_expression и step_statement разделены запятой вместо полуколонной и каждый должен присутствовать (т.е. для_(,,), является недействительным). Пример: Этот код печатает каждый элемент N раз, когда N является значением элемента. Новая линия завершает распечатку каждого значения.
Как и прежде, все они лениво оцениваются. Результатом таких утверждений являются композиты, которые передаются в STL для каждой функции. С точки зрения для каждого, то, что было передано, является просто функтором, не больше, не меньше.
Copyright © 2001-2002 Joel de Guzman Статья Statements раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |