如何声明非标准数组属于类



我有一个VBA类:

Option Explicit
Public Re As Double 'Real
Public Im As Double 'Imaginary

Public Function CZ_Sqt(Z As Complex, Exp As Integer) As Variant  
   Dim Table() As Complex
   Dim i As Integer
   If Exp > 0 Then
       ReDim Preserve Table(0 To Exp - 1)
       Set Table(UBound(Table)) = New Complex
   Else: Exit Function
   End If
   For i = 0 To UBound(Table)
      Table(i).Re = 1
      Table(i).Im = 1
   Next i
   set CZ_Sqt = Table 
End Function

在模块中:

Sub asd()
    Dim K As Complex
    Dim A As Variant
    Set K = New Complex

    K.Re = 1
    K.Im = 3
    Set A = K.CZ_Sqt(Z, 5)
end sub
  1. 如何在步骤中"设置"所有变量"表"?在示例中的解决方案中,仅设置了元素 Table(4),但省略了其他元素。
  2. 如何将这个变量"表"返回到函数名称"CZ_Sqt"?我提出的这个是行不通的。
  3. 如何将考虑数组复杂类型的变量"CZ_Sqt"传递给变量"A"?

您使用的类与对象和对象集合相同。

我将功能分为 2 类:

  • 复杂
  • 复杂集合 - 包含复杂类的集合

编辑:ComplexCollection.Add中没有重复的检查,并且在ComplexCollection.Retrieve中存在检查。

复杂

Option Explicit
Public Re As Double
Public Im As Double

复杂集合

Option Explicit
Dim oCol As Collection
Public Function Create(pRe As Double, pIm As Double) As Complex
    Dim oResult As Complex
    Set oResult = New Complex
    oResult.Re = pRe
    oResult.Im = pIm
    Set Create = oResult
End Function
Public Sub Add(pComplex As Complex, pKey As String)
     oCol.Add pComplex, pKey
End Sub
Public Function Retrieve(pKey As String) As Complex
     Set Retrieve = oCol(pKey)
End Function
Private Sub Class_Initialize()
    Set oCol = New Collection
End Sub
Private Sub Class_Terminate()
    Set oCol = Nothing
End Sub

测试.bas

Public Sub TestCollection()
    Dim oCL As ComplexCollection
    Dim oC As Complex
    Set oCL = New ComplexCollection
    Set oC = oCL.Create(1, 2)
    Debug.Print oC.Im, oC.Re
    oCL.Add oC, "1"
    Set oC = Nothing
    Set oC = oCL.Retrieve("1")
    Debug.Print oC.Im, oC.Re
End Sub

最新更新