my — 현재 객체의 모든 메서드 호출하기
my — 현재 객체의 모든 메서드 호출하기
객체 지향 Tcl(TclOO)에서 객체의 메서드 안에서 자기 자신의 다른 메서드를 호출해야 할 때가 있어요. 그럴 때 my 명령을 쓰면, 기본적으로 밖에 드러나지 않는(private) 메서드까지도 자유롭게 호출할 수 있답니다.
본문
package require TclOO
my methodName ?arg ...?
my 명령은 객체의 메서드들이 그 객체(또는 그 클래스)의 어떤 메서드든 호출할 수 있게 해 줘요. 특히 methodName으로 쓸 수 있는 유효한 값의 집합은 객체와 그 슈퍼클래스가 지원하는 모든 메서드의 집합이고, 내보내지 않은(not exported) 메서드도 포함돼요.
메서드가 호출되는 객체는 항상 my 명령이 호출된 메서드의 현재 컨텍스트인 객체예요. 즉 self object가 돌려주는 객체죠.
각 객체는 자신만의 my 명령을 가지고 있고, 이 명령은 객체의 인스턴스 네임스페이스 안에 있어요.
예제
my의 기본 사용법을 보여주는 예시예요. oo::object 클래스의 variables 메서드를 쓰는데, 이 메서드는 기본적으로 공개적이지 않아요.
oo::class create c {
method count {} {
my variable counter
puts [incr counter]
}
}
c create o
o count → prints "1"
o count → prints "2"
o count → prints "3"
더 알아보기
next— 슈퍼클래스의 메서드를 호출해요oo::object— 모든 객체의 기반 클래스예요self— 현재 객체·메서드에 대한 정보를 얻어요