我几乎没有关于表达的类似问题。为方便起见,我将它们标记为Q1,Q2和Q3。
首先。如文档中所述,
表达式中的变量名称不包含在百分号中(伪数组和其他双引用除外)。因此,文字字符串必须用双引号括起来,以区别于变量。 Source
据我了解,这意味着我们应该编写如下代码:
a = aaa
b = zzz
if (a = "aaa" or b = "bbb")
MsgBox, It works!
然而,这似乎也有效:
a = aaa
b = zzz
if (%a% = aaa or %b% = bbb)
MsgBox, It works!
第二种方式有缺点吗? (Q1)
我发现自己的一个可能的缺点是,如果变量只包含数字,则第二种方法不起作用。这不起作用:
a = 111
b = 999
if (%a% = 111 or %b% = 222)
MsgBox, It works!
为什么现在停止工作? (Q2)
而且,如果变量只包含数字,则似乎不需要在表达式中引用它的值:
a = 111
if (a = "111") ; Also works for a = "aaa"
MsgBox, It works!
a = 111
if (a = 111) ; It will not work for a = "aaa". We forced to us quote signs if var contains letters.
MsgBox, It works too.
为什么第二种方式(if (a = 111)
)有效,我们应该或不应该避免它? (Q3)。
答案 0 :(得分:1)
(Q1)
如果变量包含在表达式中的百分号内(在示例中为%a%),则该变量包含的内容将被假定为另一个变量的名称或部分名称。
这也有效
a = aaa
b = zzz
if (%a% = a or %h% = cc)
MsgBox, It works!
因为未指定变量%a%和%h%的值。
(Q2)
如果var和value都是纯数字,它们将被比作数字而不是字符串。 否则,它们将按字母顺序比较为字符串(即,字母顺序将确定var是更大,相等还是小于值)。
(Q3)
只有文字字符串必须用双引号括起来。 如果变量仅包含数字,则无需引用。