Smalltalk Tips
Jump to navigation
Jump to search
- Smalltalk Tips
객체의 클래스를 알고싶을때
내용
3 class. <- 영역선택후 Print it 진행
이렇게 하면 SmallInteger가 나온다
정작 하고싶은건 factorial의 class를 알고싶었던건데 안나온다.
그래서 Finder에서 factorial을 찾았더니 selector로 나오네. 그럼 이건 class가 아니라 method라는 의미.
찾아보니 SmallInteger의 부모class인 Integer의 method(selector)였다.
그러니 class를 찾아도 안나오지.... factorial은 class가 아니라 selector니까...
참고자료
- http://w.nya.kr/doku.php?id=%EA%B0%9C%EB%B0%9C:%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4:smalltalk:%EA%B0%9D%EC%B2%B4 <- 유용하심.
- http://ta.onionmixer.net/wordpress/?p=146 <- 이 내용을 가지고 정리해놓은글
smalltalk에서는 error의 return도 객체다
참고자료
- http://blog.naver.com/PostView.nhn?blogId=daliot&logNo=120034678025&redirect=Dlog&widgetTypeCall=true <- 달룟님의 적나라한글.
block을 이용한 인자의 처리에 대한 Transcript와 string출력
내용
실제로 이렇게까지 쓸일은 없지만..... 객체의 동작을 테스트한다는점에서는 한줄로 보는 쓸모있는 예제가 되지 않을까 싶다
Transcript show: ([:x :y :aa :cc | x + y + ( aa * cc ) ] value: 1 value: 2 value: 3 value:4) printString.
블록으로 4개의 value를 받아서 연산한 결과를 string출력으로 보낸다음 그걸 Transcript의 show라는 셀렉터에 인수로 전달... 정도의 내용 되시겠다. 실제로 이렇게 쓸일은 없겠지...-.-;
주의할점이 하나 있다면 블록 전체를 ()로 감싼다음 printString을 먹여줘야한다는거. 연산식만 쓰는경우에는 상관이 없는데 이게 블록식 자체가 인수로 전달되어야 하다보니 3 printString같은상황이 되도록 깔끔하게 정리를 해줘야하는 모양.