这个问题主要是为了更好地理解VBScript的功能。我认识到我可以简单地做一些演员来了解我的代码会发生什么,但在我的情况下,我想了解为什么需要使用cast或任何“workaround”。为简单起见,这是我的代码的基本概念:
variable1 = 1
Public Function findSomethingInATextString(par1, par2)
[...searching with a Do Until loop code here...]
Result = 1
If([par2 is found in par1]) Then
Result = 0
End If
Return Result
End Function
variable1 = findSomethingInATextString("Hello World", "Hello")
当我运行此操作时,出现Type Mismatch
错误。我不明白为什么会这样。 variable1
是一个整数,findSomethingInAString()
返回一个整数。它们似乎是相同的数据类型。
我在一个受限制的环境中工作,我无法进行太多的调试(在这个程序中代码很慢......)。所以目前我无法说出这是什么数据类型 - 我只知道它显然不是整数。
毕竟,为了确保我的问题清楚,我很想知道我的函数的返回类型是什么(如果有人碰巧知道),但是我真正的问题是 :为什么返回类型不与variable1匹配?
答案 0 :(得分:2)
使用最小脚本
Return
输出
cscript 36633603.vbs
...36633603.vbs(1, 1) Microsoft VBScript runtime error: Type mismatch: 'return'
要向自己证明,只需在VBScript中提及return
就会抛出类型不匹配错误。
相信JosefZ评论说VBScript通过分配函数的名称来返回函数值。更好:阅读docs(在尝试编写代码之前)。
证据:
Function f1()
f1 = 1
End Function
WScript.Echo f1(), TypeName(f1())
输出:
cscript 36633603.vbs
1 Integer