Types 设置类型未知的VBScript变量

Types 设置类型未知的VBScript变量,types,vbscript,Types,Vbscript,VBScript有两个用于设置变量的语法 字符串和整数等基本体设置为 primitive_var = 3 Set my_object = some_object 而对象设置为 primitive_var = 3 Set my_object = some_object 我有一个函数调用,可以返回任何一个。我可以按如下方式检查类型 If VarType(f(x, y)) = vbObject Then Set result = f(x, y) Else result = f(x, y

VBScript有两个用于设置变量的语法

字符串和整数等基本体设置为

primitive_var = 3
Set my_object = some_object
而对象设置为

primitive_var = 3
Set my_object = some_object
我有一个函数调用,可以返回任何一个。我可以按如下方式检查类型

If VarType(f(x, y)) = vbObject Then
  Set result = f(x, y)
Else
  result = f(x, y)
End If

但是,这浪费了函数调用。只需一次调用f,如何实现这一点?

您可以使用Sub来分配变量,使用Set for objects:

Option Explicit

' returns regexp or "pipapo" (probably a design error,
' should be two distinct functions)
Function f(x)
  If x = 1 Then
     Set f = New RegExp
  Else
     f = "pipapo"
  End If
End Function

' assigns val to var nam, using Set for objects
' ByRef to emphasize manipulation of var nam
Sub assign(ByRef nam, val)
  If IsObject(val) Then
     Set nam = Val
  Else
     nam = Val
  End If
End Sub

Dim x
assign x, f(1) : WScript.Echo TypeName(x)
assign x, f(0) : WScript.Echo TypeName(x)
输出:

cscript 27730273.vbs
IRegExp2
String
但是我更希望有两个不同的函数,而不是一个f()