我需要在 VBScript 中初始化几个具有相同值的变量。我能找到的唯一方法是例如x = 5 : y = 5 : z = 5
。有没有类似的方法x = y = z = 5
?
问问题
5796 次
2 回答
5
VBScript 不支持多重赋值。一份声明
x = y = z = 5
将像这样评估(伪代码使用:=
as 赋值运算符和==
作为比较运算符以更好地说明正在发生的事情):
x := ((y == z) == 5)
x := ((Empty == Empty) == 5)
x := (True == 5)
x := False
结果,变量x
将被赋值,False
而其他变量 (y
和z
) 保持为空。
示范:
>>> x = y = z = 5
>>> WScript.Echo TypeName(x)
Boolean
>>> WScript.Echo "" & x
False
>>> WScript.Echo TypeName(y)
Empty
>>> WScript.Echo TypeName(z)
Empty
该声明
x = 5 : y = 5 : z = 5
不是实际的多重分配。这只是编写 3 个语句的一种方式
x = 5
y = 5
z = 5
在一行中(冒号将 VBScript 中的语句相互分隔)。
于 2015-07-13T16:46:11.043 回答
2
该构造x = y = z = 5
适用于赋值表达式返回所分配的值的语言,该值在先前的赋值中使用,...。
但是在 VBScript 中,赋值表达式不返回任何值,所以你不能这样做。
但是,如果只在一行中为变量赋值,并且只指定一次的值是要求,则可以使用标准的三分离语句
x = 5 : y = x : z = x
或做类似的事情(是的,我知道,它效率不高,也不漂亮,它只是工作)
Option Explicit
Function S(ByRef variable, value)
If IsObject( value ) Then
Set variable = value
Set S = value
Else
variable = value
S = value
End If
End Function
Dim x, y, z
Call S(x, S(y, S(z, 5)))
WScript.Echo x & " " & y & " " & z
于 2015-07-13T17:04:21.467 回答