0

私は次のことに遭遇しましたが、このパラメータリストの意味を理解できません。

proc IsSpecificationLive { specificationDate { onDate "" } }

より具体的には{ onDate"" }、パラメータリスト内にある目的は何ですか?

4

3 に答える 3

2

オプション引数 の空のデフォルト値onDate

procのマニュアルページより

Argsは、プロシージャへの仮引数を指定します。これは、それぞれの要素が 1 つの引数を指定する空のリストで構成されます。各引数指定子も、1 つまたは 2 つのフィールドを持つリストです。指定子にフィールドが 1 つしかない場合は、それが引数の名前になります。2 つのフィールドがある場合、1 つ目は引数名で、2 つ目はデフォルト値です。デフォルト以外の引数が続くデフォルト値を持つ引数は、必須の引数になります。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

これは、オプションのパラメーターの構文です。したがって、このプロシージャは 2 つのパラメータを取ります。1 つ目は必須 (specificationDate)、2 つ目はオプションです。プロシージャが 1 つのパラメーターだけで呼び出された場合、onDate は "" に設定されます。2 つのパラメーターで呼び出された場合、onDate は 2 番目のパラメーターが何であれ設定されます。

于 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 に答える