C++ расширение языка
От: Caracrist https://1pwd.org/
Дата: 30.06.10 05:43
Оценка: :)))
Скажу чего мне нехватает
Покритикуйте или расскажите чего нехватает вам. Ссылки на языки в которых подобная проблема решена будут интересны, но хотелось бы не сильно далеко уходить от мира c++

Мне не так уж и много надо.

1. break [what]; continue [what];
возможность делать break(и continue) из любого скоупа, а не только цикла. Плюс параметризировать.
число говорит сколько скоупов оборвать, а назавание цыкла говорит какой первый встречающийся цикл оборвать. Через запятую перечисление последовательных обрывов.

например если написанно:
  Скрытый текст
{
  while(true)
  {
    break 2; // это ведет
  }
} // сюда

while (true)
{
 {
    break while; // это ведет
 }
} // сюда

do
{
 {
   while (true)
   {
     for (;;)
    {
      break while, 1; // это ведет
    }
   }
 } // сюда
} while(true);

{
  while(true)
  {
    continue 2; // это ведет
  }
 // сюда
}

while (true)
{
 {
    continue while; // это ведет
 }
// сюда
} 

do
{
 {
   while (true)
   {
     for (;;)
    {
      continue while, 1; // это ведет
    }
   }
 // сюда
 }
} while(true);


2. ключевое слово loop (или любое другое имеющее такую же функциональность)

loop auto my_scope_var = get_the_var();
loop string my_scope_string;

Строка инициализации переменной выполняется один раз после входа в loop scope, а деструктор вызывается при выходе из него.

примеры:

  Скрытый текст
string s;
ifstream fin("1.txt");
while (getline(fin, s)) // читаем по строкам
{
    loop istringstream iss;
    loop string s2; // эти переменные объявленны тут только для читабельности,
// их реальное место за пределами цикла, но при этом нет никакой причины чтобы они были бы там видны...
    iss.str(s);
    while (iss >> s2) // читаем прочитанную строку по словам
    {
       if (/*some condition*/)
       {
           continue while, while; // :) goto nextLine;
       }
       //...
    }

nextLine:
}

for (;;)
{
   if (not time to begin changes)
     continue;
   loop lock_t lock(m_mutex);
   // допустим что все изменения в данном цикле должные делаться под одним замком, 
   // однако нет никакой причины закрывать его заранее
}


3. goto case; как в C#
~~~~~
~lol~~
~~~ Single Password Solution
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.