过程

有些语言称之为函数。另一些语言称之为子程序。还有一些语言称之为方法。在 TCL 中,我们称之为 程序, Procedures。我知道这些词之间有微妙的、人类无法区分的变化 -- 但谁在乎呢?

语法

proc procedureName arguments ?args? body

而我(作者)则更喜欢下面这种......

proc procedureName { arguments ?args? } {
    body
}

proc 命令会以任意名字,创建出一个新的 Tcl 过程,a new Tcl procedure,并以那个名字,取代其下既有的任何命令或过程。每当调用这个新命令时,Tcl 解释器将执行 body 的内容。可以为过程指定参数。参数是由一个列表(可能为空)组成,每个元素指定一个参数。每个参数的指定符,argument specifier,也是包含了一或两个字段的列表。如果只有一个字段,则为参数名称;如果有两个字段,则首个字段为参数名称,第二个字段为该参数的默认值。

对于这条命令(proc),这里将给出一个 C++ 示例,和一个 TCL 示例......

C++ 中

int plus(int a, int b)
{
    int ans=a+b;
    return ans;
}

Tcl 中

proc plus {a b} {
    set ans [expr $a+$b]
    return $ans
}

给定的参数,可以是数字、字符串、列表、人类 -- 总之,任何东西都可以。我(作者)还不知道,如何将人作为参数,但我坚信这是可行的。

使用函数名,便可以调用已定义的函数。参数列在名称之后。使用上述函数的示例。

# Function Plus
proc plus {a b} {
    set ans [expr $a+$b]
    return $ans
}

set sum [plus 1 2]

label .txt -text "Sum of 1 and 2 is $sum"
pack .txt
Last change: 2023-10-25, commit: 3cb83fb