[Maya] Procedure 접근과 호출
< Script1 >
----------------------------------------------------------------------------------
proc localFunc()
{
print "\n localFunc called";
}
proc gFunc()
{
print "\n gFunc called";
localFunc();
}
gFunc();
----------------------------------------------------------------------------------
source 결과:
gFunc called
localFunc called
< Script2 >
----------------------------------------------------------------------------------
proc localFunc()
{
print "\n localFunc called~";
}
proc localFuncSuper()
{
print "\n localFuncSupercalled~";
localFunc();
}
----------------------------------------------------------------------------------
source 후 localFunc() 호출 결과:
// Error: Cannot find procedure "localFunc". //
source 후 localFuncSuper() 호출 결과:
// Error: Cannot find procedure "localFuncSuper". //
< Script3 >
----------------------------------------------------------------------------------
proc localFunction1()
{
print "\n localFunction1 called~";
}
global proc gFuncSuper()
{
print "\n gFuncSuper called~";
localFunction1();
}
source 후 gFuncSuper() 호출 결과:
gFuncSuper called~
localFunction1 called~
source 후 localFunction1() 호출 결과:
// Error: Cannot find procedure "localFunction1". //
< NOTE >
---------------------------------------------------------------------------------------------
localFunc가 gFunc에서 호출 되려면 스크립트파일을 불러온 것이라 할지라도
호출 되기 전에 정의가 되어야 한다. 즉, 순서에 유의해야한다.
global procedure로 정의해서 이미 source를 수행한 함수 이름에 대해
global 키워드를 제거하여 local로 만든다고 해도,
스크립트 에디터에서는 glocal procedure일 때의 함수를 호출하게 된다.
왜? source를 수행하면 메모리에 남아 있으니까.
global procedure는 다른 스크립트에서 호출할 수 있다.그 전에 프로시져가 메모리에 올라와 있다면.
그러나 <Script1>의 경우를 보건대, 스크립트 내에서 바로 호출이 되었다면 가능하다.
global procedure에서 local procedure를 호출하는 것이 가능한데,
소스 후에 스크립트 외부에서 호출해도 local procedure를 내부에서 제대로 호출한다.
그렇다고 해서 local procedure가 외부에서 호출되는 것은 아니며,
global procedure만 호출되는 것으로 보인다.