2014-02-28 4 views
0

"puts"에 대한 대체 명령을 찾고있었습니다. 거기에 tcl에 대한 대체 명령이 있습니까? 어떤 것이 있으면 알려주세요거기에 TCL에 넣을 대체 명령

+1

'puts'가 할 수있는 대체 명령이 무엇을 기대할 수 있습니까? 즉, 어떤 문제를 해결하려고합니까? –

+0

아니오. puts를 재정의 한 경우 다른 이름을 선택하십시오. 네임 스페이스에 있다면':: puts'를 사용하여 전역 명령을 명시 적으로 지정할 수 있습니다. – patthoyts

답변

1

아니요, puts 및 (이후 8.5 이후) chan puts이지만 과 동일한 구현 코드가 사용됩니다. 그러나 원하는대로 쉽게 쓸 수있는 자신 만의 명령을 만들 수 있습니다. 예를 들어, 다음, 채널 이름과 데이터를 가진 주장 간단한 작가, 바이너리 모드에서 작동하도록 채널을 구성의 줄 바꿈없이 데이터를 기록하고 채널 플러시 :

proc writeBinary {channelName data} { 
    fconfigure $channel -translation binary 
    puts -nonewline $channelName $data 
    flush $channelName 
} 

을 그리고 여기 뭔가 그 매우 많은처럼 작동 C의 printf() :

proc printf {pattern args} { 
    puts [format $pattern {*}$args] 
} 

(I는 로깅 수준을 지정할 수 있으며, 메시지에 대한 세부 사항을 작성하고, 메시지를받을 수 있도록 내가 로깅에 적응이의 더 정교한 버전을 사용 사용 가능한 경우 적절한 로그 대상에 기록됩니다. 자바의 log4j를 연상시키는 애너. 하지만 아마도 그 정도의 허구가 필요하지 않을 것입니다.)

일을 더 쉽게하기 위해 절차를 작성하는 데있어 아무 문제가 없습니다. Tcl은 다른 모든 것을 구축하기에 충분하다고 밝혀 짐에 따라 puts을 제공합니다.

1

아니요, Tcl에는 실제 출력을위한 여러 명령이 없습니다. 그 대신 다른 인수 조합과 다른 명령과의 협력을 통해 다양한 방식으로 결과물을 산출합니다. 예를 들어, puts은 플래그를 제공하여 출력을 stdout ( 채널 인수 제공) 또는 줄 바꿈으로 끝내지 않고 출력하도록 수정할 수 있습니다. 마찬가지로 format의 출력 puts을 적용하여 제조 할 수있다 (C의 printf이처럼) 포맷 출력 출력 그래서

# ... insert necessary initialization here ... 
puts [::msgcat::mc "My string is %s" foo] 
# => Min sträng är foo 

: 다국어 할 수

puts [format "My string is %s" foo] 
# => My string is foo 

(변형 예에서는 보통하다. 당신이 특별히 찾고있는 것이 있습니까?