Re: [问题] 想请问一个关于"参数传递"的问题

楼主: yauhh (小y宝贝)   2012-01-01 03:26:38
※ 引述《ofspring (青春无敌)》之铭言:
:  Sub (x,y,z)
: {x = y + z;
: y = z - x}
: main()
: {a=1; b=2; c=3
: call Sub (a, b, a+c);
: print(a, b, c);}
: Q3: 若参数传递的方式是 call-by-name,输出结果为何?
: A3: (6, -2, 3)
我觉得 call by name 字义就是"用参数名字去叫函数执行"
实际作法就是先把函数内对应的变量名字全换过,然后,执行到那一行时才求值.
Sub (a, b, a+c) 第三个参数要看成一个名字,这参数名叫 a+c
Sub (a, b, a+c) = { a = b + a+c; b = a+c - a }
= { a = 2 + 1+3; b = a+c - a }
任何位置出现 a+c, 都应该要找 a=1, c=3. 而单独存在的 a, 值受前一行程式
影响, 所以
= { a = 6; b = a+c - a }
= { a = 6; b = 1+3 - 6 }

Links booklink

Contact Us: admin [ a t ] ucptt.com