Tcl 스크립트에서 일부 최종 작업을 실행하기 위해 Tcl proc의 복귀를 확인하고 싶습니다. 예상대로 교체 info body X10
return [expr $a * 10]
와 작동하지만 invalid command name " return [expr $a * 10] "
Tcl 스크립트 : proc 본문을 실행할 때 잘못된 명령 이름이 반환됩니다.
:
proc X10 { a } { return [expr $a * 10] }
proc procF {} {
set a 13
catch {[info body X10]} __result
return $__result
}
procF
앞의 코드는 나에게 오류를 제공 다음과 같이 예를 들어 내 코드가 될 수 있습니다. 처음에 생각한 것은 둘 다 교환 가능하고 동일한 출력을 제공해야한다는 것입니다. 첫 번째 오류가 발생하는 이유와 두 가지 오류의 차이점은 무엇입니까?
코드가 더 빨라지고 함정이 줄어들지 않게하려면, 표현식 주위에 중괄호로 'X10'을 정의하십시오 :'proc X1 {a} {return [expr {$ a * 10}]}' Tcl로 바이트 코드를 컴파일하면'X1 {[puts haha; exit]}'... –
그게 좋은 지적입니다. 나는 왜 가이드와 중괄호로 표현을 묶는 것이 더 나은지에 대해 스스로에게 묻곤했습니다. 그리고 그것은 단지 일종의 가독성이라고 생각했습니다. 그러나 "바이트 코드 컴파일"의 일부를 얻지 못했습니다. 더 자세히 설명하거나 일종의 참조 또는 링크를 참조 할 수 있다면 고맙겠습니다. – Devos
당신이 무엇을 하든지,'procF'는 문자열 "__result"를 리턴합니다. 호출을'return $ __ result' 또는 동일하게'set __result'라고 원할 수도 있습니다. –