Скажу чего мне нехватает
Покритикуйте или расскажите чего нехватает вам. Ссылки на языки в которых подобная проблема решена будут интересны, но хотелось бы не сильно далеко уходить от мира 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#