我遇到了以下内容,无法弄清楚此参数列表的含义:
proc IsSpecificationLive { specificationDate { onDate "" } }
更具体地说,{ onDate"" }
在参数列表中的目的是什么?
答案 0 :(得分:2)
可选参数onDate
的空默认值。
来自proc
的手册页Args 指定过程的正式参数。它由一个列表组成,可能是空的,每个列表的元素都指定一个参数。每个参数说明符也是一个包含一个或两个字段的列表。如果说明符中只有一个字段,那么它就是参数的名称;如果有两个字段,则第一个是参数名称,第二个是默认值。具有默认值且非默认参数后面的参数成为必需参数。在8.6中,这将被视为错误。
示例:
proc IsSpecificationLive { specificationDate { onDate "" } } {
puts $onDate
}
IsSpecificationLive foo bar; # outputs "bar"
IsSpecificationLive baz; # outputs an empty line
有关详细信息,请参阅proc的文档。
答案 1 :(得分:1)
这是可选参数的语法。因此,此过程需要两个参数。第一个是必需的(specificationDate),第二个是可选的。如果仅使用一个参数调用该过程,则onDate将设置为“”。如果使用两个参数调用它,则onDate将设置为第二个参数。
答案 2 :(得分: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?"