前向声明
每个变量、过程等,需要使用前向声明。前向声明不能互相递归:
- # 前向声明:
- proc even(n: int): bool
- proc odd(n: int): bool =
- assert(n >= 0) # 确保我们没有遇到负递归
- if n == 0: false
- else:
- n == 1 or even(n-1)
- proc even(n: int): bool =
- assert(n >= 0) # 确保我们没有遇到负递归
- if n == 1: false
- else:
- n == 0 or odd(n-1)
这里 odd 取决于 even 反之亦然。因此 even 需要在完全定义前引入到编译器。前向声明的语法很简单:直接忽略 = 和过程体。 assert 只添加边界条件,将在 模块 段中讲到。
语言的后续版本将弱化前向声明的要求。
示例也展示了一个过程体可以由一个表达式构成,其值之后被隐式返回。