我需要在VBScript中初始化几个具有相同值的变量。我能找到的唯一方法就是x = 5 : y = 5 : z = 5
。有没有类似于x = y = z = 5
的方法?
答案 0 :(得分:5)
VBScript不支持多项作业。声明
x = y = z = 5
会像这样评估(伪代码使用:=
作为赋值运算符,==
作为比较运算符,以更好地说明发生了什么):
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中将语句彼此分开)。
答案 1 :(得分: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