Оценка по имени и цикл 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 на единицу.

  1. Итак, первый шаг y = v[0], поэтому напишите (10), затем i++ (i=1).
  2. Второй шаг y = v[1], поэтому напишите (20), тогда я увеличу i на один (i=2).
  3. Третий и последний шаг y = v[2], поэтому напишите (50) и снова i ++, который теперь равен 3.

Теперь, какое значение оно должно вернуть?! Если я оцениваю снова y, я не могу сделать y = v[3], потому что я выхожу за пределы. Я делаю что-то не так? Должен ли я просто оценить y один раз, перед циклом foreach? Должно быть что-то с foreach, который я не учитываю при вызове параметров по имени.

Не знаю, я немного запутался.

Заранее спасибо!

0 ответов

Другие вопросы по тегам