グローバル プロシージャを定義すると、スクリプト ファイルから、関数の中で、コマンド ラインからというように、どこからでもグローバル プロシージャを呼び出すことができます。グローバル プロシージャを宣言する場合の一般的な形式は次の通りです。
global proc return_type procedure_name ( arguments ) {
MEL_statements
}
プロシージャの戻り値の型を指定する場合、値を返すためにプロシージャのコード ブロックのどこかで return 演算子を使用する必要があります。
global proc float square(float $x) {
return $x * $x;
}
square(5.0);
25
プロシージャの戻り値の型を指定しない場合(プロシージャが値を返さないことを示す)にできるのは、戻り値をつけずに return 演算子を指定することだけです。このコンテキストで return 演算子を使用した場合、これは関数ブレイクの役割を果たします。
// This does not work.
global proc add5(int $x) {return $x+5;};
// Error: global proc cc(int $x) {return $x+5;}; //
// Error: This procedure has no return value. //
// This works.
global proc add5(int $x) {return;};"
global proc string sayHi() {
return "Hello!\n");
}
global proc float square(float $x) {
return $x * $x;
}
global proc int max(int $a, int $b) {
if ($a > $b) {
return $a;
} else {
return $b;
}
global proc msg() {
print "This proc has no return value.\n";
}
プロシージャ宣言の最初で global キーワードを省略すると、プロシージャは定義されたファイル内でローカルになります。
// This is a local procedure
// that is only visible to the code in this file.
proc red5() {print("red5 standing by...\n");}
これは、他のプロシージャで使用される「ヘルパ」プロシージャを作成するのに非常に便利です。公開するグローバル プロシージャは 1 つか 2 つだけにして、スクリプトを使用する他の人々にはヘルパ コードが見えないようにすることができます。
スクリプト エディタ(Script Editor)でローカル プロシージャを定義することはできません。これらは、外部スクリプト ファイルのみで使用可能です。
proc myLocalProc() { print "In myLocalProc()\n" ; } proc anotherLocalProc() { print "In anotherLocalProc()\n" ; myLocalProc; } global proc noForwardRef() { print "Calling anotherLocalProc()\n" ; anotherLocalProc; }