При передаче параметра по результату, когда формальное значение параметра назначается фактическому? - PullRequest
0 голосов
/ 28 января 2011

Как заголовок, сразу после оператора возврата?

int x = 1;

function F(ref int y) { y  = y + AnotherF(x); }

function AnotherF(result z)
{
   z = null;
   return (-1);
}

F(x); print(x); // prints 0 or null?

1 Ответ

0 голосов
/ 29 января 2011

Ответ сам себе : функция AnotherF возвращает -1. Непосредственно перед уничтожением его записи (и, следовательно, перед передачей управления обратно в F), значение z присваивается фактическому параметру (y). После присвоения нулю значения x, F продолжает вычислять y = 1 + (-1) = 0. Тогда x равно 0.

...