| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1028 人关注过本帖
标题:能否自定义一个不确定参数个数的函数?
只看楼主 加入收藏
朗朗
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2007-10-2
收藏
 问题点数:0 回复次数:17 
能否自定义一个不确定参数个数的函数?
如题
举例说明:比如自定义一个好象EXCEL里的MAX()返回做大值,可以返回N个数的最大值,也可以返回N+1个数的最大值
谢谢!
搜索更多相关主题的帖子: 函数 定义 参数 
2007-10-21 15:21
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
收藏
得分:0 
文不对题!
2007-10-21 15:52
朗朗
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2007-10-2
收藏
得分:0 
以下是引用刨子头在2007-10-21 15:52:06的发言:
文不对题!

我说的不够明白吗?
就是要自定义一个MAX()函数可以返回不确定个数值的最大数
比如:MAX()可以返回3,6,9这三个数中最大数
MAX()也可以返回3,6,9,11,15中的最大数
MAX()也可以返回3,6,9,11,15............中的最大数

2007-10-21 16:08
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
ParamArray

快上课了……
2007-10-21 16:14
刨子头
Rank: 1
等 级:新手上路
威 望:1
帖 子:319
专家分:0
注 册:2007-9-24
收藏
得分:0 

利用数组。数组的下标作为函数的参数之一。

2007-10-21 16:16
朗朗
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2007-10-2
收藏
得分:0 
以下是引用刨子头在2007-10-21 16:16:17的发言:

利用数组。数组的下标作为函数的参数之一。

谢谢
我以前也曾考虑过数组(不会有人说我马后炮吧?呵呵)
可试了几次不成功,以为是思路有问题,现在看来是功力不够
我在试一试
谢谢

2007-10-21 16:45
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 

Function Max(params() as integer) as integer

...
end function


--- 调用:
maxnumber=Max(Array(1,2,3,4,5,6))


不过这样的编程不是必要的,毕竟你写代码的时候用到多少参数就是多少参数,参数数量不应当随着运行状态而变化。但也不一定都是这样子,VS2005中就经常看到数组做为参数提供一套信息。

2007-10-21 16:48
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
还有一种方法,用Optional定义可选参数。

Function Max(param1 As Integer, Optional param2 as Integer =-32768, Optional param3 as integer = -32768 ........) as integer
.........
end function
2007-10-21 16:57
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 

Option Explicit


Public Function Max(Optional ByVal Value) As Double
Dim x As Variant
Dim Temp As Double
Dim Temp1() As String

On Error Resume Next

If IsMissing(Value) = True Then
Exit Function

End If

If IsArray(Value) = True Then ''''''''(1)如果Value为数组'''''''
Temp = Value(LBound(Value))
For Each x In Value
If x > Temp Then
Temp = x

End If

Next

ElseIf VarType(Value) = vbString Then '''''(2)如果value为字符串''''''''
Temp1 = Split(Value, ",")
Temp = Temp1(LBound(Temp1))
For Each x In Temp1
If x > Temp Then
Temp = x

End If

Next

End If

Max = Temp

End Function


Private Sub Command1_Click()
Dim Value(4) As Double

Value(0) = -100.5
Value(1) = 9.56325
Value(2) = -20
Value(3) = 100.284
Value(4) = -30.5
Text2 = Max(Value)

End Sub

Private Sub Text1_Change()
Text2 = Max(Text1)

End Sub


2007-10-21 18:20
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 

哇 好高级……看不懂……

2007-10-21 18:44
快速回复:能否自定义一个不确定参数个数的函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012292 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved