그래서 목록이 있고 TCL에서는 항목이 { "1" "2" "3"}으로 분리되어 저장됩니다. 이 목록을 { "1", "2", "3"}로 변환하고 싶습니다. foreach와 lappending을 거치지 않고 각 항목의 끝까지이 작업을 효율적으로 수행하는 방법은 무엇입니까? ?TCL 목록에서 공백 대신 ","로 구분하는 방법은 무엇입니까?
감사합니다.
그래서 목록이 있고 TCL에서는 항목이 { "1" "2" "3"}으로 분리되어 저장됩니다. 이 목록을 { "1", "2", "3"}로 변환하고 싶습니다. foreach와 lappending을 거치지 않고 각 항목의 끝까지이 작업을 효율적으로 수행하는 방법은 무엇입니까? ?TCL 목록에서 공백 대신 ","로 구분하는 방법은 무엇입니까?
감사합니다.
귀하의 질문에 실제로 의미가 없습니다. TCL에서 목록은 내부적으로 문자열로 저장됩니다. { "1", "2", "3"}으로 표시하고 싶다고 말하면 목록의 외부 표시를 참조한다고 가정 할 수 있습니다. 즉 다음과 같이 명령을 결합하여 수행 할 수 있습니다 :
% set x [list 1 2 3]
% set z "\{\"[join $x "\","]\"\}"
{ "1", 2 ", 3"}
당신의 캐릭터 라인 표현을 혼동하고 메모리 내 표현을 포함한리스트 메모리에있는 목록은 바로 그것입니다. 그렇지 않은 경우에는 분리 된 요소의 순서가 지정된 목록입니다. "pretty print"(터미널에 출력하기 위해) 일반적으로 문자열을 만들어서 출력해야하는 경우. 문자열을 만드는 가장 간단한 방법은으로 이미 제안 된대로 [join]
을 사용하는 것입니다. 이 목록 요소 공간 문자열로 저장되어있는 "것을 의미하지는 않는다 : 다른 말로
set L [list 1 2 3]
puts $L
출력"1 2 3 "사실 속지 않는다 - 분리 ". 암시 적으로으로 요청할 때 Tcl에서 사용하는 목록의 기본 문자열 표현입니다. 문자열 값을 필요로하는 [puts]
에 해당 목록을 전달하여 목록에서 문자열을 만듭니다. (NB 엄밀히 말하면 "문자열 값을 기대합니다"는 Tcl 내부 구조에 대해서는 맞지 않지만 지금은 무시해 보겠습니다.)
목록은 더 이상 내부적으로 문자열로 저장되지 않습니다. Tcl_ListObject [link]를 참조하십시오. http://tmml.sourceforge.net/doc/tcl/ListObj.html). 그러나 그것은 사소한 세부 사항이다. – schlenk
그것은''문자의 가능성을 다루는 데 필요한 모든 인용을 처리하지는 않지만''foreach '를 수행 할 때 (또는 도우미 절차를 수행 할 때)입니다. –