私は次のことに遭遇しましたが、このパラメータリストの意味を理解できません。
proc IsSpecificationLive { specificationDate { onDate "" } }
より具体的には{ onDate"" }
、パラメータリスト内にある目的は何ですか?
私は次のことに遭遇しましたが、このパラメータリストの意味を理解できません。
proc IsSpecificationLive { specificationDate { onDate "" } }
より具体的には{ onDate"" }
、パラメータリスト内にある目的は何ですか?
オプション引数 の空のデフォルト値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のドキュメントを参照してください。
これは、オプションのパラメーターの構文です。したがって、このプロシージャは 2 つのパラメータを取ります。1 つ目は必須 (specificationDate)、2 つ目はオプションです。プロシージャが 1 つのパラメーターだけで呼び出された場合、onDate は "" に設定されます。2 つのパラメーターで呼び出された場合、onDate は 2 番目のパラメーターが何であれ設定されます。
これにより、単一の引数でプロシージャを呼び出すことができ、のデフォルト値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?"