在前面的文章中给出了量子的数据结构,当时为了介绍量子编程法的原理和快速举例,并没有按这种数据结构进行编码,只是简单的采用变量和过程进行逻辑上的等效处理。
但在实际应用中,还是习惯于将量子的功能封装到一个类中,以方便编程和进一步的深入研究。
下面给出VBA代码的量子类定义,这里面只包含量子的基本功能,以后随着研究的深入,其成员会不断的扩充。
'类模块:Quantum
Option Explicit
'量子类Quantum
Public Value As Variant '量子的数据成员
Public m_colValidSourSet As New Collection '确认源量子的集合(元素为Quantum类型)
Public m_colDriveSuccSet As New Collection '驱动继量子的集合(元素为Quantum类型)
Function IsValid() As Boolean '量子的确认
IsValid = SourQtmsIsValid '源量子的确认
If IsValid Then IsValid = MySelfIsValid '量子自身的确认
End Function
Sub Action() '量子的动作
If SourQtmsIsValid Then '源量子有效
MySelfAction '量子的具体动作
'驱动继量子
If MySelfIsValid Then '量子自身有效
SendMsg '向继量子发消息
End If
End Sub
Function SourQtmsIsValid() As Boolean '源量子的确认
SourQtmsIsValid = True
If m_colValidSourSet.count = 0 Then Exit Function
Dim i As Long
For i = 1 To m_colValidSourSet.count
SourQtmsIsValid = m_colValidSourSet(i).IsValid
If Not SourQtmsIsValid Then Exit Function
Next i
End Function
Function MySelfIsValid() As Boolean '量子自身的确认
'具体的确认代码
'......
End Function
Sub MySelfAction() '量子的具体动作
'具体的动作代码
'......
End Sub
Sub SendMsg() '向继量子发消息
Dim item As Variant
For Each item In m_colDriveSuccSet '对每个继量子
item.Action '直接调用动作过程
Next item
End Sub
在这个Quantum类的定义中,MySelfAction()和MySelfIsValid()定义了量子对象具体的动作代码和确认代码,因此它们本质上是过程和函数的指针,需要在产生对象时,将相应过程和函数的地址赋给它们。当然,VBA是不支持过程和函数指针的,但可以另外想办法解决,以后再说。