Почему Java, C и C ++ (возможно, и другие языки) не допускают более одного типа для переменных цикла for? Например:
for (int i = 0; i < 15; i++)
в этом случае у нас есть переменная цикла i, которая является счетчиком цикла.
Но мне может понадобиться другая переменная, область действия которой ограничена циклом, а не каждой итерацией. Например:
for (int i = 0, variable = obj.operation(); i < 15; i++) { ... }
Я храню obj.operation()
возвращаемых данных в variable
, потому что я хочу использовать их only внутри цикла. Я не хочу, чтобы variable
хранилось в памяти и не оставалось видимым после выполнения цикла. Не только для освобождения места в памяти, но и для предотвращения нежелательного поведения, вызванного неправильным использованием variable
.
Следовательно, переменные цикла полезны, но широко не поддерживаются из-за ограничения типа. Представьте, что метод operation()
возвращает длинное значение. Если это произойдет, я не смогу пользоваться преимуществами переменных цикла без приведения и потери данных. Следующий код не компилируется в Java:
for (int i = 0, long variable = obj.operation(); i < 15; i++) { ... }
Опять же, кто-нибудь знает, почему существует такое ограничение типа?