VBScript でいくつかの変数を同じ値で初期化する必要があります。私が見つけることができる唯一の方法は、たとえばx = 5 : y = 5 : z = 5
です。に似た方法はありx = y = z = 5
ますか?
5796 次
2 に答える
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
を 1 行で入力します (VBScript ではコロンでステートメントを互いに区切ります)。
于 2015-07-13T16:46:11.043 に答える
2
この構造x = y = z = 5
は、割り当て式が割り当てられた値を返す言語で機能し、それは前の割り当てで使用されます....
しかし、VBScript では代入式は値を返さないため、それを行うことはできません。
ただし、値を 1 回だけ指定して 1 行だけで変数に値を代入する必要がある場合は、標準の 3 つの区切りステートメントを使用できます。
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 に答える