= 和 == 之间的差异

 
 
 

写入 MEL 代码时,经常会混淆两个外观非常相似、但事实上截然不同的运算符:

如果混淆这两个运算符,则可能会导致很难找到 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!";
}

(请注意,使用 ==,而不是 =。)

在某些情况下,在条件中使用指定确实是一种有用的快捷方式,但初学者应始终避免混淆 = 和 ==。