变量、表达式和“if”语句
Variables, expressions, and `if` statement
我几乎没有关于表达式的类似问题。为了方便起见,我将它们标记为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).
(Q1)
如果变量在表达式中用百分号括起来(在您的示例 %a% 中),则该变量包含的任何内容都被假定为另一个变量的名称或部分名称。
这也有效
a = aaa
b = zzz
if (%a% = a or %h% = cc)
MsgBox, It works!
因为未指定变量 %a% 和 %h% 的值。
(Q2)
如果 var 和 value 都是纯数字,它们将作为数字而不是字符串进行比较。
否则,它们将按字母顺序作为字符串进行比较(即,字母顺序将确定 var 是大于、等于还是小于 value)。
(Q3)
只有文字字符串必须用双引号引起来。
如果变量只包含数字,则不需要引用。
我几乎没有关于表达式的类似问题。为了方便起见,我将它们标记为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).
(Q1)
如果变量在表达式中用百分号括起来(在您的示例 %a% 中),则该变量包含的任何内容都被假定为另一个变量的名称或部分名称。
这也有效
a = aaa
b = zzz
if (%a% = a or %h% = cc)
MsgBox, It works!
因为未指定变量 %a% 和 %h% 的值。
(Q2)
如果 var 和 value 都是纯数字,它们将作为数字而不是字符串进行比较。 否则,它们将按字母顺序作为字符串进行比较(即,字母顺序将确定 var 是大于、等于还是小于 value)。
(Q3)
只有文字字符串必须用双引号引起来。 如果变量只包含数字,则不需要引用。