- 最后登录
- 2018-12-19
- 注册时间
- 2012-8-20
- 阅读权限
- 90
- 积分
- 54706
- 纳金币
- 32328
- 精华
- 41
|
定义数据
本章描述 MEL的数据类型它们之间的转换:
1、变量;
2、常数;
3、数据类型转换;
4、限制。
1、变量
所有变量名以$开始。变量名不包括空格和特殊字符。你可以使用下划线和数字作为变量名但开头不能是数字。
识别大小写,如$temp不同于$Temp。
例:
int $radical7Mark; // 有效
int HEYchief; // ERROR: 开头缺"$"
int $ nine; // ERROR: 开头不是"$"
int $_VAL_ID___AIT_; // 有效
int $howdyYa`ll; // ERROR: 含有无效字符
int $1Bill; // ERROR: 开头不能是数字
有以下五种变量类型:
类型 意义 例子
int 整数 (...-2, -1, 0, 1, 2...)10, -5, 和 0
float 小数 392.6, 7.0, and -2.667
string 一个或更多的字符 "What's up, chief?"
vector 三个浮点数 <<3,?7.7,?9.1>>
matrix 浮点数阵列 <<1.1, 2, 3; 6.7, 5, 4.9>>
以上类型除matrix外,都可以是一个阵列。如,一个三元素的整数阵列是一个跟一个的三个整数。
声明和标注变量
声明一个变量是说明变量的名字和类型;标注一个变量是给已生命的变量一个专有的值。下例是将声明和标注合为一步:
int $temp = 3;
float $Temp = 222.222;
string $tEmp = "***a kid.";
vector $teMp = <<1, 2.7, 3.2>>;
matrix $temP[2][3] = <<4.5, 1, 0.2; -13, 9911, 0.007>>;
当生命矩阵变量时,必须包括二维阵列的尺寸。
下例说明对整型、浮点、字符串和矢量阵列型变量阵列的声明和标注:
int $TEmp[5] = {100, 1000, -70, 2, 9822};
float $TeMp[4] = {43.3, -10.7, 0, 82.5};
string $TemP[3] = {"Lord", "Flies", "cool brown fox2."}; < p>
vector $tEMp[2] = {<<0, 0, 0>>, <<0.01, -2, 16>>};
如果一个变量被声明但未被标注,它的所有的值是0;字串变量则?quot; "。
float $teMP; // 赋值: 0;
string $TEMp[3]; // 赋值: {"", "", ""};
vector $TEmP[2]; // 赋值: {<<0, 0, 0>>, <<0, 0, 0>>};
matrix $TeMP[3][2]; // 赋值: <<0, 0; 0, 0; 0, 0>>;
如果一个变量被声明或者被使用而没有定义它的类型,它被隐含声明为将要赋值给它的那种类型。
$tEMP = 0.0; // 浮点数
string $TEMP[]; // 零元素字符串阵列
$trip = "heya Buddy"; // 字符串
$rip = {1, 2, 3, 4}; // 四元素整型阵列
$lip = <<1, 2.1; 3, 4>>; // 2X2 矩阵
$flixp = $TEMP; // 零元素字符串阵列
注意值0.0是一个浮点数,而一个0值是一个整型数。这决定了在隐含声明时是产生一个浮点数还是产生一个整型数。
不建议使用隐含声明,因为它不象变量的隐含声明那样的清楚。
保留字
MEL的保留字可以是一个变量类型、控制逻辑或是表达一个值。以下是MEL的保留字:
break case continue default do else
false float for global if in
int matrix no off on proc
return string switch ***e vector while
yes
数据类型关键字
int float vector string matrix
布尔常数关键字
yes no on off ***e false
流动控制关键字
if else for while do in break continue default switch case
其他关键字
global return source catch alias proc
保留字也区分大小写。所以int是整型,Int不是。实际上alias、source、catch 也是保留字,但它们起指令作用,
因此没有被包括在上述表内。
字符串
字符串可用"+"运算连接。
string $what = "Whale";
string $title = "Great" + " White " + $what;
这将使title变量的内容为Great White Whale。
矢量
为寻址一个vector的各个成分,使用"."。
vector $LOS = <<1, 2, 7>>;
float $firstComponent = $LOS.x; // 赋值为 1
float $secondComponent = $LOS.y; // 赋值为 2
float $thirdComponent = $LOS.z; // 赋值为 7
标注矢量的成分:
vector $LOCK = <<7, -4, 9>>;
$LOCK = <<$LOCK.x, $LOCK.y, 3>>; // Assigned <<7, -4, 3>>
但不能直接给一个成分标数字:
$LOCK.z = 3000; // 错误
但是通常当访问一个矢量成分时,你应该象下面例子那样围绕它使用括号:
例子:
print $LOCK.x; // 错误
print($LOCK.x);
setAttr persp.scaleX $LOS.x; // 错误
setAttr persp.scaleX ($LOS.x);
【来源软件学院】
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/ |
|