set lambda 1
set lambdaR [open LamdaValue.tr r]
set Reader [read $lambdaR]
close $lambdaR
foreach {x} $Reader {
set lambda $x
}
set $lambda [expr {$lambda + 1.0}]
set LambdaW [open LamdaValue.tr w]
puts $LambdaW "$lambda"
이 코드 조각을 사용하여 파일에서 람다 값을 읽고 수정 한 다음 파일에 다시 쓰려고합니다. tcl 실행 파일을 다루는 ns-2를 사용하고 있습니다. 하지만 람다의 값은 변하지 않습니다. 오류가 어디에 있는지 알아낼 수 있습니까?
파일을 읽고 내용을 반환하는 작은 프로 시저를 작성하고 값을 다시 작성하는 다른 프로 시저를 작성하는 것이 가장 좋습니다.
proc readfile {filename} {
set f [open $filename]
set data [read $f]
close $f
return $data
}
proc writefile {filename data} {
set f [open $filename w]
puts -nonewline $f $data
close $f
}
그런 다음 나머지 코드를 많이 단순화 할 수 있습니다.
set lambda 1
# The catch means we use the fallback if the file doesn't exist
catch {set lambda [readfile LamdaValue.tr]}
set lambda [expr {$lambda + 1.0}]
writefile LamdaValue.tr $lambda
당신이 가지고 있던 다른 문제는 당신이하고 있었다는 것 set $lambda
입니다. 이것은 이상한 이름을 가진 변수를 생성합니다. Tcl에서는를 사용할 때 변수 읽기$
와 를 사용 하지 않을 때 변수 이름 지정 (명령이 업데이트 할 수 있음)을 구분해야합니다 $
. 한 변수의 이름을 다른 변수에 유지하려는 경우가 아니라면 upvar
혼동을 줄이거 나 배열 요소 사용으로 전환하기 위해 함께 사용하는 것이 가장 좋습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다