0

私は非常に一般的な関数を作成し、外部から出くわした変数を使用するように命令しようとしています。私は次の(簡略化されたコード)を試しましたが、役に立たなかった:

set line "found \$find1 at \$find2"
do_search $line

proc do_search {line} {
...
if {[regexp $exp $string match find1 find2} {
     puts "$line"
}

ただし、取得するのは次のとおりです。または、 beforefound $find1 at $find2を使用しない場合は、関数を呼び出す前のfindの値。\$find

この正規表現はファイルの解析中のwhileループの一部であるため、procが呼び出された後は値を使用できません。

どのようにそれを行うことができますか?

4

1 に答える 1

2

あなたの正確なスタイルのために、あなたは欲しいですsubst

if {[regexp $exp $string match find1 find2} {
     puts [subst $line]
}

しかし、あなたも使用を検討するかもしれませformatん:

set fmt "found %s at %s"
do_search $fmt

proc do_search {fmt} {
...
if {[regexp $exp $string match find1 find2} {
     puts [format $fmt $find1 $find2]
}
于 2013-03-06T17:54:36.420 に答える