当前位置:  开发笔记 > 编程语言 > 正文

使用IIf语法错误

如何解决《使用IIf语法错误》经验,为你挑选了1个好方法。

这是一个我希望的简单问题.我今天了解了IIf,并希望在某些情况下实现它以节省几行.

IIF(isnumeric(inputs), resume next, call notnum)

这是红色意味着有语法错误,如何解决这个问题?我已经扫描了MSDN这篇文章,所以我不是在这里偷懒.



1> Mathieu Guin..:

这不是该IIf功能的工作原理.

它是一个函数,而不是一个声明:你像使用任何其他函数一样使用它的返回值 - 将它用于控制流是一个坏主意.

一目了然,IIf有点像三元运算符在其他语言中的作用:

string result = (foo == 0 ? "Zero" : "NonZero");

条件,值(如果为true),值(如果为false),并且两个可能的值属于同一类型.

这是为了转变这个:

If foo = 0
    Debug.Print "Zero"
Else
    Debug.Print "NonZero"
End If

进入:

Debug.Print IIf(foo = 0, "Zero", "NonZero")

不过要小心,IIf评估双方真实虚假的部分,所以你不会希望有副作用出现.例如,调用以下Foo过程:

Public Sub Foo()
    Debug.Print IIf(IsNumeric(42), A, B)
End Sub

Private Function A() As String
    Debug.Print "in A"
    A = "A"
End Function

Private Function B() As String
    Debug.Print "in B"
    B = "B"
End Function

结果输出:

in A
in B
A

这就是为什么使用IIf控制流程并不理想.但是当真实结果错误结果参数是常量表达式时,如果明智地使用它,它可以通过将If...Else...End If块转换为简单的函数调用来帮助提高代码的可读性.

像所有好东西一样,最好不要滥用它.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有