2013-02-28 59 views
0

我碰上了以下内容,想不通这是什么参数列表意味着:的Tcl参数表澄清

proc IsSpecificationLive { specificationDate { onDate "" } } 

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

回答

2

可选参数onDate的空默认值。

proc

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

实施例:

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

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

详情参见用于proc的文档。

1

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

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?"