MAXScript の関数は変数と配列に格納でき、引数として他の関数に渡すことができる値の 1 つです。これらの関数は高順位関数とも呼ばれます。すべての組み込み関数、および MAXScript によって3ds Max オブジェクト クラスに基づいて定義される関数は、関数と同名のシステム グローバル変数に格納された値です。スクリプト関数を定義するとき、関数の値は関数と同じ名前でグローバル変数の中に置かれます。グローバル変数の中の値は使用することができ、配列に格納したり引数として渡すなど、他の値と同じように扱うことができます。
関数名は単に関数自体を表す変数であるため、引数を取らない関数は特別な方法で呼び出す必要があります。
例:
引数をとらない関数
get_current_target
を呼び出す場合、次のように書くことはできません。t = get_current_target
これは、
get_current_target
関数値を変数t
に格納し、関数get_current_target
の実行結果は格納しません。その代わり、NULL の呼び出し演算子である"()"を使用する必要があります。t = get_current_target()
呼び出し先の関数は、関数呼び出しの構文の中では <operand>
として定義されます。つまり、呼び出し元の関数を取得するために評価される対象が式であることもあるということです。
例:
(if a > b then sin else cos) x --conditional function choice
handlers= #(move, scale) x = 2 handlers[x] $box01 [1,1,1] --get the function out of an array