如何一起初始化多个变量?

时间:2015-07-13 16:22:51

标签: variables vbscript qtp initializing

我需要在VBScript中初始化几个具有相同值的变量。我能找到的唯一方法就是x = 5 : y = 5 : z = 5。有没有类似于x = y = z = 5的方法?

2 个答案:

答案 0 :(得分:5)

VBScript不支持多项作业。声明

x = y = z = 5

会像这样评估(伪代码使用:=作为赋值运算符,==作为比较运算符,以更好地说明发生了什么):

x := ((y == z) == 5)
x := ((Empty == Empty) == 5)
x := (True == 5)
x := False

因此,变量x将被赋值False,而其他变量(yz)将保持为空。

演示:

>>> 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