gpt4 book ai didi

vba - 使用vba中的接口(interface)对不同类型的类型使用相同的函数

转载 作者:行者123 更新时间:2023-12-02 21:27:22 25 4
gpt4 key购买 nike

“AddWeight”功能可以为每只宠物增加体重。我知道我的所有动物(继承)都有具有相同名称(“数据”)的 basicInfo 类型,因此我确信“AddWeight”函数可以正确处理它。

当然,Vba 不会让我这样做,我试图在对象或变体的函数标题中声明......它们对我来说都不起作用。

有人有创意吗?

我不想为每种动物编写这个函数,而且我也不认为调用这样的函数很优雅:

Call addWeight(Max_Cat.data)

有人有其他想法吗?提前致谢

   Type basicInfo
name As string
weight as integer
height as integer
End Type

Type cat
data As basicInfo
mustacheType As String
End Type

Type dog
data As basicInfo
bark_volume as integer
End Type

Dim Max_Cat as cat
Dim Buddy_Dog as dog
.
. some code
.
Call addWeight(Max_Cat)
Call addWeight(Buddy_Dog)


Public Function AddWeight(petName as object) 'not work also for petName as variant
petName.data.weight =petName.data.weight+50

End Function

最佳答案

正如评论中提到的,这不是最严格意义上的“继承”。它更像是一个复合结构。如果您想使用 Type 表示数据,显而易见的解决方案是仅传递您想要使用的 member,即 basicInfo:

Sub SomeSub()
Dim Max_Cat As cat
Dim Buddy_Dog As dog

'Other stuff.
AddWeight Max_Cat.data
AddWeight Buddy_Dog.data
End Sub

Public Function AddWeight(animal As basicInfo)
animal.weight = animal.weight + 50
End Function

如果您确实想要使用接口(interface),则需要构建类而不是类型。这样您就可以让它们实现一个通用接口(interface),然后使用该接口(interface)作为参数。这可能会给您提供更健壮和可扩展的代码。

关于vba - 使用vba中的接口(interface)对不同类型的类型使用相同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485312/

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