В этом вопросе я нашел интересную деталь о области действия переменной final
в Java. Я недостаточно хорошо знаю Java, но думаю, что final
идентична константе в Ruby.
В C ++ это возможно:
for(int i = 0; i < 5; ++i){
const int c = i * 5;
std::cout << c << std::endl;
}
Попытка изменить значение во время цикла невозможна, но дает ошибку времени компиляции.
Мне было любопытно посмотреть, как Ruby справится с этим, запустил irb и написал этот код для проверки:
5.times do |x|
XPI = x * Math::PI
puts x
end
результат был
0.0
(irb):27: warning: already initialized constant XPI
3.141592653589793
(irb):27: warning: already initialized constant XPI
6.283185307179586
(irb):27: warning: already initialized constant XPI
9.42477796076938
(irb):27: warning: already initialized constant XPI
12.566370614359172
=> 5
Итак, мой вопрос: есть ли способ назначить константу в начале цикла, которая инициализируется для каждой итерации цикла без создания предупреждающих сообщений? Могут быть случаи использования в реальном мире, когда я хочу сделать вычисление на основе переменной итератора, а затем убедиться, что результат не изменится для оставшегося цикла.
Ничего не нужно каждый божий день, но мне просто любопытно.