0

我遇到了以下问题,无法弄清楚这个参数列表的含义:

proc IsSpecificationLive { specificationDate { onDate "" } }

更具体地说,{ onDate"" }进入参数列表的目的是什么?

4

3 回答 3

2

可选参数的空默认值onDate

proc的手册页

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

例子:

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

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

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

于 2013-02-28T19:57:50.170 回答
1

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

于 2013-02-28T19:56:51.167 回答
1

这允许您使用单个参数调用该过程,并且默认值为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?"
于 2013-02-28T19:58:17.677 回答