プロシージャを定義する
 
 
 

グローバル プロシージャ

グローバル プロシージャを定義すると、スクリプト ファイルから、関数の中で、コマンド ラインからというように、どこからでもグローバル プロシージャをコールすることができます。グローバル プロシージャを宣言する場合の一般的な形式は次の通りです。

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)でローカル プロシージャを定義することはできません。これらは、外部スクリプト ファイルのみで使用可能です。

注:MEL でローカルにスコープされたプロシージャを前方に参照することは許可されていません。ローカルにスコープされたプロシージャの定義は、これらをコールする前に出現させる必要があります。たとえば、noForwardRef.mel というファイルでは、ローカル プロシージャの参照前にこれらを定義します。

proc myLocalProc() { print "In myLocalProc()\n" ; } proc anotherLocalProc() { print "In anotherLocalProc()\n" ; myLocalProc; } global proc noForwardRef() { print "Calling anotherLocalProc()\n" ; anotherLocalProc; }