自动转化

Maya 的自动类型转化使您无需明确指出类型即可进行类型转化。如果指定的数据类型不被接受,该功能还可自动转化该类型。

有时,意外的自动类型转化可能会引发问题。了解类型转化的规则可帮助您解决以下类型的错误:  

  • 字符串支配所有其他类型。

  • 向量支配浮点型。

  • 浮点型支配整型。

  • 如果一个运算数为整型,另一个为浮点型,MEL 会将整型转化为浮点型。

  • 在向量和矩阵类型之间,位于左侧的类型处于支配地位。

  • 在指定操作中,位于左侧的类型处于支配地位。                  

    在指定操作中,右侧的类型将转化为左侧的类型。前四个规则适用于右侧计算期间的子表达式;在指定给左侧时将发生最终转化。                  


下表介绍自动转化的规则。        

 
操作结果数据类型
整型运算符浮点型浮点型
浮点运算符整型浮点型
整型运算符向量向量
向量运算符浮点向量
向量运算符矩阵向量
矩阵运算符向量矩阵
矩阵运算符字符串字符串
字符串运算符整型字符串
$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 的整型,该值被转化为字符串,并与“Lives!”连接。生成的结果字符串隐示声明 var4 属于字符串类型,值为“7 Lives!”。

显式转化

有两种方法可将值从一种类型显式转化为另一种类型。最常用的方法是在值前面的括号内指定类型。例如:

$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)
,