gpt4 book ai didi

vb6 - 作为可选参数传递以使子例程像被省略一样工作的优雅方式?

转载 作者:行者123 更新时间:2023-12-03 23:58:33 31 4
gpt4 key购买 nike

在 VB6 中,函数 Mid(string, start, [length]) 有一个可选参数 length。如果省略,将传递 start 绑定(bind)之后的整个字符。

假设我只希望在特定条件下使用此默认行为:

s = Mid(s, i, IIf(condition, j, TheValue)) ' What could be TheValue?

由于 lengthVariant 类型,我尝试了 Empty。它没有用。 -1Nothing 也没有。我不想在 If-Then-Else 子句或其他方式中复制到 Mid 调用。这可能吗?

最佳答案

这是一个带有 OP 的 s = Mid(s, i, IIf(condition, j, TheValue)) 行的工作示例

Option Explicit

Property Get TheValue(Optional RetVal As Variant)
TheValue = RetVal
End Property

Private Sub Form_Load()
Dim s As String
Dim i As Long
Dim j As Long
Dim condition As Boolean

s = "test test test"
i = 6: j = 3
condition = False
s = Mid(s, i, IIf(condition, j, TheValue)) '<--- this works!
Debug.Print s
End Sub

注意 TheValue 如何返回一个“缺失的”Variant,即一个对 IsMissing 测试为阳性并且可以用来代替可选参数的变量不传递实际参数。

关于vb6 - 作为可选参数传递以使子例程像被省略一样工作的优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66264164/

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