参照解除演算子

「&」参照値の可視クラス

公開関数の参照解除プレフィックス演算子 * が、3ds Max 4 から MAXScript で使用できるようになりました。

この演算子は、関数およびインタフェース メソッドへの参照による引き渡し引数をサポートするために追加された、'&' 参照演算子と組み合わせて使用できます。

'&' 演算子は、MAXScript 内の変数、プロパティ、または配列要素スロットへの参照の取得に使用されます。参照による引数を受け入れる関数に対してこの参照を渡すと、そのコードが参照している変数、プロパティ、または配列要素に直接値を代入し、複数の値を返すことができます。

'*' 演算子は、MAXScript コードの任意の場所で '&' 参照値と共に使用できます。参照が解除されてから、'&' が参照しているスロットまたは変数内の値が取得され、その値が参照スロットに代入されます。

例:

以下の例では、シーン オブジェクト $foo の .pos プロパティを参照する ref に値を代入します。

ref = &$foo.pos

'*' 参照解除演算子は、コードの他の場所で次のように使用できます。

$baz.pos = *ref

上記の * によって「ref」内の参照値が参照解除され、式は原則的に次の内容と同等になります。

$baz.pos = $foo.pos

また、次の構文を代入先として使用することもできます。

*ref = [10,0,0]

上の式では、'ref' 内の $foo.pos への参照が参照解除されてから、この値が代入され、結果として $foo の位置が設定されます。

乗算演算子の'*' との混同を避けるため、'*' 参照解除演算子の優先順位は、関数呼び出しと 'as' 強制演算子の間に設定されます。つまり、参照解除値を引数として関数に渡す場合は、次のように参照解除をカッコで囲む必要があります。

foo (*ref) x y z

参照値は、次のように変数、プロパティ、および配列要素に対して生成されます。

&foo
&$box.position.x
&valArray[23]

'*' 参照解除演算子は、MAXScript 内で拡張使用することもできます。参照解除演算子を使って、実際のオブジェクトの代わりに参照を使用する汎用目的のコードを記述すれば、異なる時点でさまざまな種類のオブジェクトとプロパティに適用することができます。

 

MAXScript の & 参照値では、ネストされたプロパティへのアクセスができます。

例:

これにより、次のような構文が可能になります。

ref = &$foo.pos

とそれに続く

*r.controller

で以下と同じ意味になります。

$foo.pos.controller

関連事項