Оценка по имени и цикл foreach
Я столкнулся с этой проблемой в первый раз, и я не могу понять это.
Допустим, у нас есть массив и цикл foreach. Что-то вроде этого:
var v = array(10,20,50);
var i = 0
write(foo(v, v[i++]));
function foo(ref int[] v, name int y){
foreach(int j in v){
write(y);
}
return y;
}
Я не прав или что-то здесь не сработает? Я имею в виду, что каждый раз, когда я буду проходить через цикл foreach, я буду оценивать y (по имени), поэтому, будучи v[i++], я буду увеличивать значение моей переменной i на единицу.
- Итак, первый шаг y = v[0], поэтому напишите (10), затем i++ (i=1).
- Второй шаг y = v[1], поэтому напишите (20), тогда я увеличу i на один (i=2).
- Третий и последний шаг y = v[2], поэтому напишите (50) и снова i ++, который теперь равен 3.
Теперь, какое значение оно должно вернуть?! Если я оцениваю снова y, я не могу сделать y = v[3], потому что я выхожу за пределы. Я делаю что-то не так? Должен ли я просто оценить y один раз, перед циклом foreach? Должно быть что-то с foreach, который я не учитываю при вызове параметров по имени.
Не знаю, я немного запутался.
Заранее спасибо!