MAYA的MEL简单问题

2024-11-16 13:51:22
推荐回答(2个)
回答1:

好吧 这个问题问的好 为什么 if($a = (3,5,8,10)) 是错的?

其实这和程序语言规范是一样的 在这个语句中 a 是一个变量 所谓变量 就是不确定的量 它没有固定的值 所以它可能是有理数中的某一个数 在你定义一个变量的时候 电脑就自动为其分配一个内存空间 它的大小 这个我也不知道是多大 是因语言规范来定的 但是无论电脑给它多大的空间 但是 我们自动它本质只是一个量 对不对 然后你在语句 if($a = (3,5,8,10))中 却给它分配了4个常量 这样电脑一定会报错的 因为这样你给它赋予4个量 那么它就会丢失其他三个量 因为它本身就是一个量 只能容纳一个量 原理就像做车的时候一样 a就像一个凳子 3.5.8.10 就像4个人 而车(车就像mel语法一样)规定a(凳子)最多只能坐一个人 所以其他三个人肯定坐不了了 要想有位置坐的话 就要再多三个凳子 做法就是再定义三个变量 我觉得你一定想问 那能不能这样写
if $a = 3
$a = 5
$a = 8
$a = 10

其实这也是错的 因为你已经把a给3 了 那其它的你再给还是错的,因为它已经有3了 再多就是多个人坐一个凳子 要想将a再赋予其他的量 这个需要将a初始化的。

如果你真的想赋予多个常量 其实你可以将它们赋予数组的 语法是
{
int $a [] = {3, 5, 8,10};

}

调用的时候直接调用它在数组的位置 那样语言就会自动将它调出的 记住数组的排序是从0开始的哦

就是3 调用就是$a [0]
5就是$a [1]

下面以此类推。

print $a[2] 结果就是8;

回答2:

首先说一下,在MEL中"="是赋值的意思,如果想知道两侧是否相等要用"==",判断不等于用"!="

可以用else if逐个排查,但是那样效率不高,如果你的多个数字要改变的话,每次你都要修改很多代码,而且数字越多代码会越长

我的思路是定义一个数组,然后用循环语句遍历这个数组,去和你的$a比较

$a=3;

int $temp[ ]={1,2,3,4};//要对比的数组

for( $i in $temp)//可以理解为把数组temp中的元素依次放到$i中
{
if($a==$i) // 如果等于的处理代码
{
print("a="+$i+"\n");
}
else // 不等于的处理代码
{
print("a!="+$i+"\n");
}
}