1/1页1 跳转到查看:448
发新话题 回复该主题

ASP中的Sub和Function是什么?有什么区别?

ASP中的Sub和Function是什么?有什么区别?

Sub和Function都是VBScript中的过程。
打个比方,我们大家想知道V37的谈恋爱的过程。有些人只想知道他谈恋爱的过程(Call Sub)。有些人既想知道过程,又要知道结果有没有结婚(Call Function)

假设谈恋爱这个过程中由给MM打电话、陪MM逛街、给MM送礼物等动作组成。

那Sub 谈恋爱()和Function 谈恋爱()有什么不同呢?

Sub 谈恋爱()
  给MM打电话
  陪MM逛街
  给MM送礼物
End Sub

Function 谈恋爱()
  给MM打电话
  陪MM逛街
  给MM送礼物
  If (mm愿意和他结婚) Then
      谈恋爱 = 成功
  Else
    谈恋爱 = 失败
  End If
End Function

在调用Sub 和 Function也有不同,因为Sub没有返回值,只要复制内容到剪贴板代码:  Call 谈恋爱()
就可以了。

在Function有返回值,所以可以把返回值赋给变量复制内容到剪贴板代码:    Dim sReturn
    sReturn = 谈恋爱()

不知道这样你能不能理解?只要不是越来越糊涂就行了:d

TOP

 

sub和function的区别

SUB和FUNCTION有什么不同呢,他们的语法应该怎么构成?
Sub:过程; Function:函数,可以带返回值
语法:
Sub SubName(参数1, 参数2,...)
....
End Sub

Function FunctionName(参数1, 参数2,...)
...
FunctionName = 返回值
End Function

调用方法:
Sub直接用 SubName 参数1, 参数2,...
Function如果不要返回值用 FunctionName 参数1, 参数2,...
如果要返回值 Result = FunctionName(参数1, 参数2,...)

语法是这样,这是对的
Sub SubName(参数1, 参数2,...)
....
End Sub

Function FunctionName(参数1, 参数2,...)
...
FunctionName = 返回值
End Function
调用时:
sub 只能用:
SubName 参数1, 参数2,...
函数则:
变量=FunctionName (参数1, 参数2,...)
FunctionName 参数1, 参数2,...
上面均未讲出根本:
SUB与FUNCTION均可有返回值。所以首先要讲清返回方式:有两种,过程或函数返回,即分配与过程或函数同名的返回变量地址。function分配,但sub不分配。VB用此方式加以区分,VC则用VOID声明不用分配。即如p=aa()若aa()是sub则什么也得不到,还会报错。但函数则会得到数值。其次,参数返回,VB中缺省用地址传参,即能返回。但声明为BYVAL即值传参,则不可返回,所以,不存在灵活性的差别。比如函数function bb(a,b), 调用时可以bb m, n也可以p=bb(m,n). 实际,如果确认不会失败,才能用SUB,否则,必须要用FUNCTION以确认是否成功或取得返回值。所以编程,应少用SUB,少用 SubName 参数1, 参数2,...的调用方式。


sub是过程不需要返回值,function是函数,需要返回值,如下:
Function NameOfFunction(parameter1, parameter2)
'some code
NameOfFunction = return value
End Function
________________________________________________
Sub NameOfSubRoutine(parameter1, parameter2)
'some code...
End Sub

除了function有返回一个值的区别外,在ASP中好像没有多大的区别,把sub写成FUNCTION好像效果一样。

TOP

 

在  VBScript  中,过程被分为两类:Sub  过程和  Function  过程。   
  Sub  过程 
  Sub  过程是包含在  Sub  和  End  Sub  语句之间的一组  VBScript  语句,执行操作但不返回值。Sub  过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果  Sub  过程无任何参数,则  Sub  语句必须包含空括号  ()。 
  下面的  Sub  过程使用两个固有的(或内置的)VBScript  函数,即  MsgBox  和  InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用  VBScript  创建的  Function  过程完成。此过程在以下讨论之后演示。   
   
    Sub  ConvertTemp() 
          temp  =  InputBox("请输入华氏温度。",  1) 
          MsgBox  "温度为  "  &  Celsius(temp)  &  "  摄氏度。" 
    End  Sub 
   
  Function  过程 
  Function  过程是包含在  Function  和  End  Function  语句之间的一组  VBScript  语句。Function  过程与  Sub  过程类似,但是  Function  过程可以返回值。Function  过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果  Function  过程无任何参数,则  Function  语句必须包含空括号  ()。Function  过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function  返回值的数据类型总是  Variant。 
  在下面的示例中,Celsius  函数将华氏度换算为摄氏度。Sub  过程  ConvertTemp  调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。   
   
    Sub  ConvertTemp() 
            temp  =  InputBox("请输入华氏温度。",  1) 
            MsgBox  "温度为  "  &  Celsius(temp)  &  "  摄氏度。" 
    End  Sub 
   
    Function  Celsius(fDegrees) 
            Celsius  =  (fDegrees  -  32)  *  5  /  9 
    End  Function 
   
  过程的数据进出 
  给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用  Sub  语句或  Function  语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees  是传递给  Celsius  函数的值的占位符:   
    Function  Celsius(fDegrees) 
          Celsius  =  (fDegrees  -  32)  *  5  /  9 
    End  Function 
   
  要从过程获取数据,必须使用  Function  过程。请记住,Function  过程可以返回值;Sub  过程不返回值。   
  在代码中使用  Sub  和  Function  过程 
  调用  Function  过程时,函数名必须用在变量赋值语句的右端或表达式中。例如: 
   
    Temp  =  Celsius(fDegrees) 
  或   
    MsgBox  "温度为  "  &  Celsius(fDegrees)  &  "  摄氏度。" 
   
   
  调用  Sub  过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用  Call  语句,但如果使用了此语句,则必须将所有参数包含在括号之中。 
  下面的示例显示了调用  MyProc  过程的两种方式。一种使用  Call  语句;另一种则不使用。两种方式效果相同。   
   
    Call  MyProc(firstarg,  secondarg) 
    MyProc  firstarg,  secondarg 
   
  请注意当不使用  Call  语句进行调用时,括号被省略。

TOP

 
1/1页1 跳转到
发表新主题 回复该主题