过程

    正式参数声明为由逗号或分号分隔的标识符列表。 形参由 : 类型名称 给出一个类型。

    该类型适用于紧接其之前的所有参数,直到达到参数列表的开头,分号分隔符或已经键入的参数。

    分号可用于使类型和后续标识符的分隔更加清晰。

    1. # b is optional with 47 as its default value
    2. proc foo(a: int, b: int = 47): int

    参数可以声明为可变的,因此允许proc通过使用类型修饰符 var 来修改这些参数。

    如果proc声明没有正文,则它是一个 前向 声明。 如果proc返回一个值,那么过程体可以访问一个名为 result 的隐式声明的变量。

    过程可能会重载。 重载解析算法确定哪个proc是参数的最佳匹配。

    1. proc toLower(c: char): char = # toLower for characters
    2. if c in {'A'..'Z'}:
    3. else:
    4. result = c
    5.  
    6. proc toLower(s: string): string = # 字符串toLower
    7. for i in 0..len(s) - 1:
    8. result[i] = toLower(s[i]) # calls toLower for characters; no recursion!

    调用过程可以通过多种方式完成:

    过程可以递归地调用自身。

    运算符 是具有特殊运算符符号作为标识符的过程:

    1. proc `$` (x: int): string =
    2. # 将整数转换为字符串;这是一个前缀运算符。

    任何运算符都可以像普通的proc一样用 'opr' 表示法调用。(因此运算符可以有两个以上的参数):