首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现scripting.dictionary项目

实现scripting.dictionary项目
EN

Stack Overflow用户
提问于 2021-11-02 11:25:31
回答 2查看 177关注 0票数 1

我正在尝试创建一个继承Scripting.Dictionnary的类,以创建具有类型限制键和项的哈希表。

我遇到的问题是我没有找到任何关于如何实现这个的文档,而且我有一条错误消息告诉我必须实现Item到接口字典。

这是我们班的原型:

代码语言:javascript
复制
Option Explicit
Implements Dictionary

Public Sub Add(nom As String, jour As Date, temps As Integer)
    Supplier.Add nom, Array(jour, temps)
End Sub

Public Property Get Item(Key As String) As Array
    Item = Supplier.Item(Key)
End Property

Public Property Set Item(Key As String, jour As Date, temps As Integer)
    Set Supplier.Item(Key) = Array(jour, temps)
End Property

我应该如何实现Item以使其工作?这是实现我所想要的好办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-02 13:08:44

您声明的目标是实现一个强类型字典。为了实现这个目标,我不会实现一个接口。相反,我将字典包装在一个类中,并通过使用另一个类来实现强类型:

供应商级

代码语言:javascript
复制
Option Explicit

Private Supplier As Dictionary

Private Sub Class_Initialize()
   Set Supplier = New Dictionary
End Sub

Public Sub Add(Key As String, Item As SupplierItem)
   Supplier.Add Key, Item
End Sub

Public Property Get Item(Key As String) As SupplierItem
   Set Item = Supplier.Item(Key)
End Property

Public Property Set Item(Key As String, Value As SupplierItem)
   Set Supplier.Item(Key) = Value
End Property

SupplierItem类

代码语言:javascript
复制
Option Explicit

Public jour As Date
Public temps As Integer

测试逻辑

代码语言:javascript
复制
Option Explicit

Public Sub Test()
   Dim s As Supplier
   Dim si As SupplierItem
   
   Set s = New Supplier
   
   Set si = New SupplierItem
   si.jour = Now
   si.temps = 3
   s.Add "Key1", si
   Debug.Print s.Item("Key1").temps
   
   Set si = New SupplierItem
   si.jour = Now
   si.temps = 4
   Set s.Item("Key1") = si
   Debug.Print s.Item("Key1").temps
End Sub
票数 1
EN

Stack Overflow用户

发布于 2021-11-02 11:57:01

您将需要实现正在实现的所有函数/属性。

就像这样

代码语言:javascript
复制
Option Explicit

Private d As Scripting.Dictionary

Implements Scripting.Dictionary

Public Sub Class_Initialize()
    Set d = New Scripting.Dictionary
End Sub

Public Property Set Dictionary_Item(Key As Variant, RHS As Variant)
    Set d.Item(Key) = RHS
End Property

Public Property Let Dictionary_Item(Key As Variant, RHS As Variant)
    d.Item(Key) = RHS
End Property

Public Property Get Dictionary_Item(Key As Variant) As Variant

End Property

Public Sub Dictionary_Add(Key As Variant, Item As Variant)

End Sub

Public Property Let Dictionary_CompareMode(ByVal RHS As Scripting.CompareMethod)

End Property

Public Property Get Dictionary_CompareMode() As Scripting.CompareMethod

End Property

Public Property Get Dictionary_Count() As Long

End Property

Public Function Dictionary_Exists(Key As Variant) As Boolean

End Function

Public Property Get Dictionary_HashVal(Key As Variant) As Variant

End Property

Public Function Dictionary_Items() As Variant

End Function

Public Property Let Dictionary_Key(Key As Variant, RHS As Variant)

End Property

Public Function Dictionary_Keys() As Variant

End Function

Public Sub Dictionary_Remove(Key As Variant)

End Sub

Public Sub Dictionary_RemoveAll()

End Sub
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69809604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档