Maya の自動型変換により、明示的に指定しなくても型を変換することができます。指定した型が適切でなかった場合も、データ型が自動変換されます。
このため、予期せぬときに自動的に型が変換されてしまい、問題が発生することがあります。型変換の規則を理解しておけば、このようなタイプのエラーを修正できるようになります。
代入では、右辺の型が左辺の型に変換されます。最初の 4 つの規則は、右辺の計算中にサブエクスプレッションに適用されます。最終的な変換は、左辺への代入時に行われます。
自動変換の規則を表にまとめると次のようになります。
演算 | 演算結果のデータ型 |
---|---|
int 演算子 float | float |
float 演算子 int | float |
int 演算子 vector | vector |
vector 演算子 float | vector |
vector 演算子 matrix | vector |
matrix 演算子 vector | matrix |
matrix 演算子 string | string |
string 演算子 int | string |
$var1 = 7 + 1.3; // Type: float (8.3) $var2 = 7.9 + 2; // Type: float (9.9) $var3 = 2 + <<4, 5, 6>>; // Type: vector <<6, 7, 8>> $var4 = 0007 + " Lives!"; // Type: string ("7 Lives!")
最後の例では、0007 は値 7 の int で文字列に変換され、「Lives!」と連結されます。結果は文字列になり、暗示的に var4 が値「7 Lives!」の文字列型になると宣言します。
明示的に型変換をする方法には 2 種類あります。値の前にカッコで囲んで型を指定するのが最も一般的な方法です。例:
$Z = (vector) "<<1, 2, 3>>"; // Type: vector (<<1, 2, 3>>) $cools = (float) 7; // Type: float (7) $ools = (string) 47.554; // Type: string ("47.554")
また、型に続けてカッコで囲んだ値を指定して、明示的に型変換することも可能です。例:
$ly = vector("<<1, 2, 3>>"); // Type: vector (<<1, 2, 3>>) $ooly = int(3.67); // Type: int (3)