Tcl参数列表说明

Tcl参数列表说明,tcl,Tcl,我遇到以下问题,无法理解此参数列表的含义: proc IsSpecificationLive { specificationDate { onDate "" } } 更具体地说,{onDate”“}位于参数列表中的目的是什么?这是可选参数的语法。所以,这个过程需要两个参数。第一个是必需的(specificationDate),第二个是可选的。如果仅使用一个参数调用该过程,onDate将设置为“”。如果使用两个参数调用,onDate将被设置为第二个参数的任何值。这是可选参数的语法。所以,这个过程

我遇到以下问题,无法理解此参数列表的含义:

proc IsSpecificationLive { specificationDate { onDate "" } }

更具体地说,
{onDate”“}
位于参数列表中的目的是什么?

这是可选参数的语法。所以,这个过程需要两个参数。第一个是必需的(specificationDate),第二个是可选的。如果仅使用一个参数调用该过程,onDate将设置为“”。如果使用两个参数调用,onDate将被设置为第二个参数的任何值。

这是可选参数的语法。所以,这个过程需要两个参数。第一个是必需的(specificationDate),第二个是可选的。如果仅使用一个参数调用该过程,onDate将设置为“”。如果使用两个参数调用,onDate将被设置为第二个参数的任何值。

可选参数的默认值为空
onDate

从手册第页,共页

Args指定过程的形式参数。它由一个可能为空的列表组成,每个列表元素指定一个参数。每个参数说明符也是一个包含一个或两个字段的列表。如果说明符中只有一个字段,那么它就是参数的名称;如果有两个字段,那么第一个字段是参数名,第二个字段是其默认值。具有默认值且后跟非默认参数的参数将成为必需参数。在8.6中,这将被视为错误

例如:

proc IsSpecificationLive { specificationDate { onDate "" } } {
    puts $onDate
}

IsSpecificationLive foo bar; # outputs "bar"
IsSpecificationLive baz; # outputs an empty line

有关更多详细信息,请参阅文档。

可选参数
onDate
的默认值为空

从手册第页,共页

Args指定过程的形式参数。它由一个可能为空的列表组成,每个列表元素指定一个参数。每个参数说明符也是一个包含一个或两个字段的列表。如果说明符中只有一个字段,那么它就是参数的名称;如果有两个字段,那么第一个字段是参数名,第二个字段是其默认值。具有默认值且后跟非默认参数的参数将成为必需参数。在8.6中,这将被视为错误

例如:

proc IsSpecificationLive { specificationDate { onDate "" } } {
    puts $onDate
}

IsSpecificationLive foo bar; # outputs "bar"
IsSpecificationLive baz; # outputs an empty line

有关更多详细信息,请参阅文档。

它允许您使用单个参数调用过程,
onDate
的默认值将是空字符串。下面是一个来自交互式tclsh会话的片段:

% proc IsSpecificationLive { specificationDate { onDate "" } } {
    puts $specificationDate
    puts $onDate
}
% IsSpecificationLive
wrong # args: should be "IsSpecificationLive specificationDate ?onDate?"
% IsSpecificationLive one two
one
two
% IsSpecificationLive one 
one

% IsSpecificationLive one two three
wrong # args: should be "IsSpecificationLive specificationDate ?onDate?"

这允许您使用单个参数调用过程,
onDate
的默认值将是空字符串。下面是一个来自交互式tclsh会话的片段:

% proc IsSpecificationLive { specificationDate { onDate "" } } {
    puts $specificationDate
    puts $onDate
}
% IsSpecificationLive
wrong # args: should be "IsSpecificationLive specificationDate ?onDate?"
% IsSpecificationLive one two
one
two
% IsSpecificationLive one 
one

% IsSpecificationLive one two three
wrong # args: should be "IsSpecificationLive specificationDate ?onDate?"