写入 MEL 代码时,经常会混淆两个外观非常相似、但事实上截然不同的运算符:
=(单个等号)运算符将值指定给变量。例如,$a = 10 会将值 10 指定给变量 $a。
==(两个等号)运算符将测试两个值是否相等。例如,($a == 10) 将测试 $a 的值是否等于 10。
如果混淆这两个运算符,则可能会导致很难找到 MEL 脚本中的错误。
假设变量 $a 的值等于 10,且您需要打印消息。如果尝试使用下列代码:
if ($a = 10) { print "equal to 10!"; }
您会发现,无论如何,该脚本始终会打印“equal to 10!”。这是因为该脚本错误地使用了单个等号(即:指定运算符),因此“测试”实际上是将 10 指定给 $a。该指定将对指定的值(在本例中为 10)进行求值。任何非零值均被认为是 true,因此该条件始终为 true!
在这种情况下,正确的代码是:
if ($a == 10) { print "equal to 10!"; }
(请注意,使用 ==,而不是 =。)
在某些情况下,在条件中使用指定确实是一种有用的快捷方式,但初学者应始终避免混淆 = 和 ==。
,