ref

关键词 ref 引入“传递参考”(也就是传址)的能力，相对应
与“传递值”(传值)，请看下面的程序：
PRE
void f(int x) {
    x++;
}

void create() {
    int x = 5;
    printf("%i\n", x);
    f(x);
    printf("%i\n", x);
}
ENDPRE

结果是两个输出都是 5，因为只是把 x 的数值 5 传递给了函数 f，
函数 f 改变的只是 x 的数值在此函数中的拷贝，并不是在函数 create()
中的 x 。我们可以用下面的方法重写：

PRE
void f(int ref x) {
    x++;
}

void create() {
    int x = 5;
    printf("%i\n", x);
    f(ref x);
    printf("%i\n", x);
}
ENDPRE

输出结果第一个是 5 第二个是 6 ，在函数 f 的宣告中 'int ref x'
指示把实际的变量 x 传递过来并对它进行操作，并不只是传递变量 x 的
数值。注意：在呼叫函数 f 的时候也必须使用关键词 ref 。

任何可以出现在 '='(等号)左边的变量(任何可以被改变的变量)都可以用
“参考”的方式传递，但有一个例外：'x[1..2] = ({ 1 })' 是合法的，
但是 'ref x[1..2]' 是不合法的，尽管 'ref x[4]' 是合法的。


translate by Find.
