Transcript에 뭔가를 넣어주려면 ( ) 를 사용하도록 하자.

http://trans.onionmixer.net/mediawiki/index.php?title=SqueakByExample:3.6

이 부분의 예문을 보고있습니다만..
왜인지 morph로 뭔가를 하는게 아니라면 이상하게 smalltalk의 예문은 대부분 printIt을 통해서 결과를 보게 되어있죠.

Transcript를 쓰면 참 좋을텐데…

생각해보니 안될일도 없다 싶네요?

Transcript show: ((17 * 13 > 200)
	ifTrue: [ 'bigger']
	ifFalse: ['smaller']); cr.

아주 간단하게 Transcript로 출력되더군요.
여기서 요점은 해당되는 구문을 ( ) 로 감싸서 결과물이 String으로 인식되게 하는게 중요포인트.

생각보다 당연하게 되는것에 재미를 슬슬 느끼는 요즘입니다 😀

Transcript와 숫자

간단하게 쓰자면

Transcript show: ‘aaaa’.

이 코드는 Transcript에 “문자열”을 출력한다는 의미가 되겠습니다.

http://trans.onionmixer.net/mediawiki/index.php?title=SqueakByExample:3.5

이 부분에서 block을 테스트하다보니 저 블록내에서의 연산은 숫자인데.. 그럼 숫자는 어떻게 출력하지? 라고 생각하고 테스트봤죠.

Transcript show: 1.

당연히 에러가 발생합니다. 그래서 숫자를 변환하는 별도의 함수외에 뭔가 방법이 없을까 라고 생각하고 Integer class의 셀렉터를 뒤지기 시작했습니다. 역시 찾으면 방법은 나오더군요.

Transcript show: 1 printString.

깔끔하게 잘 출력됩니다 또한 1 printString을 PrintIt해보면 ‘1’ 로 결과값이 나오는걸 알 수 있었죠.

사실 델파이같은데서는 showMessages(IntToStr(1)); 이런식으로 사용하기는 합니다만.. 일단 숫자 자체도 객체다보니 조금은 다른생각의 패러다임도 가능한게 아닐까 합니다. 이런것들은 확실히 좀 매력적이군요 😀

Transcript의 cr은 그 자체로 메서드입니다.

Transcript의 원래 클래스는  ThreadSafeTranscript 입니다.
이상하게 cr만 따로 보는 방법이 없다 했는데..(저는 cr 자체가 무슨 메세지같은건줄 알았죠)
ThreadSafeTranscript 클래스를 뒤져보니 cr 자체가 하나의 메소드군요…-.-;
그래서 행바꿈을 Transcript에 호출된시점에서 적용시켜주는겁니다.
이제 대략 쓰는방법을 조금씩 더 알아가는거같습니다 😀