注册 登录
编程论坛 VB6论坛

VB中可不可以把函数当做另一个函数的形参来传递

dengliedison 发布于 2012-03-17 22:46, 605 次点击
   如题,下面我给出一个样本,请各位不吝赐教

 Private Function n1(ByVal s1 As Double) As Double
        Return s1
    End Function
    Private Function n2(ByVal s2 As Double) As Double
        Return s2 * s2
    End Function
    Private Function n3(ByVal s2 As Double) As Double
        Return s2 * s2 * s2
    End Function
rivate Function GetMK(ByVal a As Double, ByVal b As Double, ByVal k As Integer) As Double
        Dim x As Double, y As Double, h As Double
        Dim n As Long, j As Long
        x = 0 : y = 0 : h = 0
        n = 1 : j = 0
        For j = 0 To k Step 1
            n = n * 2
        Next
        h = (b - a) / n
        x = a + h / 2
        For j = 0 To n Step 1
            y = y + n1(x)//这里的函数不是特定,可以通过GetMK(........)里的参数,这里的参数可不可以是上面的函数,如果可以请帮我改进一下程序,谢谢各位啦
            x = x + h
        Next
        Return (h * y)
    End Function
在上述的红色字体是函数,
怎样用统一的函数来实现积分目的,
4 回复
#2
风吹过b2012-03-19 08:47
VB不支持直接调用 函数指针 ,间接倒还是可以了。

如果你的函数个数有限,并且在设计阶段函数个数均可以固定,你可以采取编号再加选择调用的办法来实现。
如 1号为n1,2号为n2,3号为n3
那么:

Private Function GetMK(.....,函数编号 as long) As Double
......
select case 函数编号
  case 1
    y = y + n1(x)
  case 2
    y = y + n2(x)
  case 3
    y = y + n3(x)
end select

----------------------------
如果你函数多,并且在设计阶段不固定,那么去研究一下
callbyname

执行一个对象的方法,或者设置或返回一个对象的属性。

你需要把这些函数封装到一个类中。
#3
风吹过b2012-03-19 09:27
另外,你还可以在网上搜索一下 VB 函数指针。
都是用巧妙的方法来实现,对于我们功底不深的人来说,可以参考,不建议立即去学。
#4
dengliedison2012-03-20 18:57
回复 2楼 风吹过b
这个方法可以试试,谢谢啦
#5
dengliedison2012-03-20 18:58
回复 3楼 风吹过b
VB,函数指针,这个挺新颖的,可以试试。我一直以为指针式C或C++的特权呢
1