VBScript:调用由全局变量遮蔽的内置函数

时间:2009-10-29 09:03:16

标签: asp-classic vbscript scoping

ASP Classic上的VBScript包含一个“int”函数。 (它将数字向-∞舍入。)假设一些过于“聪明”的编码器创建了一个名为“int”的全局变量。有什么方法可以获得原始功能吗?我已经尝试过各种各样的方法,包括范围和狡猾的高管,但没有骰子。我怀疑这是不可能的,但我希望有人能比我更了解它。

编辑:感谢您的回复。因为你们都问过,全局变量叫做“Int”(尽管不幸的是,vbscript不区分大小写),它是一个类似于Java的Integer类的工厂。默认属性本质上是一个arg构造函数;即“Int(42)”产生一个保持42的新IntClass对象.IntClass的默认属性依次返回原始数字。

创建者试图解决缺少适当的命名空间和静态方法的问题,而且解决方案实际上非常无缝。传入一个期望int的IntClass,它会自动触发默认属性。我正在尝试修补最后剩下的接缝:调用“int”的外部代码将无法正确舍入(因为构造函数使用了CLng)。

3 个答案:

答案 0 :(得分:3)

不是我所知道的,getref仅适用于自定义函数,而不适用于内置函数。我建议重命名custom'int'函数并更新对这些自定义函数的所有引用。您可以使用搜索功能visual studio(express)或您喜欢的任何其他工具。不应该做太多工作。

答案 1 :(得分:0)

或者您可以在CInt 上使用Int

response.write trim(cint(3.14)) + "<br>"

<强>错误!! 请参阅NobodyMan评论

答案 2 :(得分:0)

我认为函数名称或变量不允许使用保留字。

邓肯森是对的。痛苦并重命名int。有可能发生的事情比这更糟糕。

(为什么有人会创建一个名为int的全局变量...这会考虑一些事情)