gpt4 book ai didi

vbscript - 重载 VBScript 中的构造函数

转载 作者:行者123 更新时间:2023-12-02 14:26:20 25 4
gpt4 key购买 nike

我找到了一种在 VBScript 中扩展类的方法,但是有什么方法可以传入参数或重载构造函数吗?我当前正在使用 Init 函数来初始化属性,但希望能够在创建对象时执行此操作。
这是我的示例类:

Class Test
Private strText

Public Property Get Text
Text = strText
End Property

Public Property Let Text(strIn)
strText = strIn
End Property

Private Sub Class_Initialize()
Init
End Sub

Private Sub Class_Terminate()

End Sub

Private Function Init
strText = "Start Text"
End Function
End Class

我创造了它

Set objTest = New Test

但想做这样的事情

Set objTest = New Test(strInitText)

这可能吗,还是必须分两次创建和初始化对象?

最佳答案

只是稍微改变一下 svinto 的方法......

Class Test
Private m_s
Public Default Function Init(s)
m_s = s
Set Init = Me
End Function
Public Function Hello()
Hello = m_s
End Function
End Class

Dim o : Set o = (New Test)("hello world")

我就是这样做的。遗憾的是没有重载。

[编辑]不过,如果你真的愿意,你可以做这样的事情......

Class Test
Private m_s
Private m_i

Public Default Function Init(parameters)
Select Case UBound(parameters)
Case 0
Set Init = InitOneParam(parameters(0))
Case 1
Set Init = InitTwoParam(parameters(0), parameters(1))
Else Case
Set Init = Me
End Select
End Function

Private Function InitOneParam(parameter1)
If TypeName(parameter1) = "String" Then
m_s = parameter1
Else
m_i = parameter1
End If
Set InitOneParam = Me
End Function

Private Function InitTwoParam(parameter1, parameter2)
m_s = parameter1
m_i = parameter2
Set InitTwoParam = Me
End Function
End Class

这给了构造函数...

Test()
Test(string)
Test(integer)
Test(string, integer)

您可以将其称为:

Dim o : Set o = (New Test)(Array())
Dim o : Set o = (New Test)(Array("Hello World"))
Dim o : Set o = (New Test)(Array(1024))
Dim o : Set o = (New Test)(Array("Hello World", 1024))

虽然有点痛。

关于vbscript - 重载 VBScript 中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/458644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com