Skip to content

特殊变量 result

在 c 语言系统编程中, 经常需要声明一个返回值

1
2
3
4
int ret = 0;
ret = read(...);
if (ret < 0) return ret;
return ret;

相比之下, nim 提供了默认的 返回值变量 result, 这个 result 的类型根据函数返回值的不同而不同

03 节 的函数可以简化成:

1
2
3
4
5
proc get_alphabet(): string = 
    for letter in 'a' .. 'z':
        result.add(letter)

echo get_alphabet()

如果你愿意, 并且执意如此, 可以将 result 给干掉, 这个过程叫作 shadow result

此时, result 被视为普通变量, 修改 result 将不能改变返回值, 除非显式 return result

1
2
3
4
5
proc local_result(): int = 
    var result = 0
    result += 5

echo local_result() # 0

这同时伴随警告

Warning: Special variable 'result' is shadowed