Function VBScript:将对象传递给函数?
下面的示例生成一个错误: VBScript编译错误:调用子脚本时不能使用括号 如果不是所有参数都是对象,则不会发生此错误 是否有特殊的方法将对象参数传递给VBScript函数Function VBScript:将对象传递给函数?,function,vbscript,Function,Vbscript,下面的示例生成一个错误: VBScript编译错误:调用子脚本时不能使用括号 如果不是所有参数都是对象,则不会发生此错误 是否有特殊的方法将对象参数传递给VBScript函数 Option Explicit Dim obj Function TestFunc(obj) WScript.Echo "Why doesn't this work?" End Function Set obj = CreateObject("Scripting.Dictionary") obj.Add("key"
Option Explicit
Dim obj
Function TestFunc(obj)
WScript.Echo "Why doesn't this work?"
End Function
Set obj = CreateObject("Scripting.Dictionary")
obj.Add("key", "val")
TestFunc(obj) ' Error here!
这条线
obj.Add("key", "val")
是什么导致了这个问题
改为
obj.Add "key", "val"
Add是一个sub,就像错误中所说的那样,不能使用parens,但TestFunc是一个函数,可以使用parens调用。只有在获得返回值时才使用括号。对于不返回内容的函数,也可以使用Sub而不是Function。括号只能在..时使用
call
关键字,例如calltestfunc(obj)
仅当函数返回值(或子函数只接受1个参数)时,才能使用括号。仅仅使用function关键字是不够的,这是有效的。我使用的函数实际上返回了一个值,但我没有将它赋给任何对象。如果我指定返回值或删除括号,它就会工作。这种行为很奇怪,但考虑到VBScript已经存在了这么长时间,我并不感到惊讶。谢谢