初めてこの問題に直面しましたが、理解できません。
配列と 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] なので write(10) 次に i++ (i=1)。
- 2 番目のステップ y = v[1] なので write(20) で、i を 1 増やします (i=2)。
- 3 番目と最後のステップ y = v[2] なので、 write(50) と i++ を再度実行すると、これは 3 に等しくなります。
では、どのような値を返す必要がありますか?! y を再度評価すると、y = v[3] は実行できません。境界を超えてしまうからです。私は何か間違ったことをしていますか?foreach ループの前に y を 1 回だけ評価する必要がありますか? 名前でパラメーターを呼び出すときに考慮していない foreach に何かがあるに違いありません。
わからない、私は少し混乱しています。
前もって感謝します!