0

初めてこの問題に直面しましたが、理解できません。

配列と 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 増やします。

  1. したがって、最初のステップ y = v[0] なので write(10) 次に i++ (i=1)。
  2. 2 番目のステップ y = v[1] なので write(20) で、i を 1 増やします (i=2)。
  3. 3 番目と最後のステップ y = v[2] なので、 write(50) と i++ を再度実行すると、これは 3 に等しくなります。

では、どのような値を返す必要がありますか?! y を再度評価すると、y = v[3] は実行できません。境界を超えてしまうからです。私は何か間違ったことをしていますか?foreach ループの前に y を 1 回だけ評価する必要がありますか? 名前でパラメーターを呼び出すときに考慮していない foreach に何かがあるに違いありません。

わからない、私は少し混乱しています。

前もって感謝します!

4

0 に答える 0