Delphi把操作數(shù)據(jù)的方法分成了兩種,
一種是function,另一種是procedure,分別稱為“函數(shù)”和“過程”,
這二者最大的差別就是函數(shù)擁有返回值而過程沒有,比如按鈕的事件響應(yīng)過程,這就是一個(gè)過程,因此它沒有返回值;
而一個(gè)簡單的函數(shù)如求字符串長度的函數(shù)Length,它的函數(shù)原形為
function Length(S:string):Integer;
這個(gè)函數(shù)有一個(gè)參數(shù)S,是您要計(jì)算的字符串,它的返回值是一個(gè)整數(shù)類型,返回字符串的長度。
舉一個(gè)例子來說吧:假設(shè)需要一個(gè)函數(shù)GetNum(),它有兩個(gè)整形參數(shù)num1,num2,函數(shù)經(jīng)過計(jì)算后返回這兩個(gè)整數(shù)的平均數(shù),
函數(shù)如下:
function GetNum(num1:Integer;num2:Integer):Integer;
//函數(shù)名var haha:Integer;Begin Result:=(num1+num2)/2;
//將計(jì)算結(jié)果賦給Result
//GetNum:=(num1+num2)/2;
//也可以這樣寫 haha:=555;
//如果對函數(shù)名賦值,函數(shù)就返回,就是說,如果使用GetNum:=(num1+num2)/2;對函數(shù)賦值,這句將永遠(yuǎn)執(zhí)行不到。
End;
函數(shù)的聲明:function 函數(shù)標(biāo)示符(參數(shù)列表):返回值;
函數(shù)的定義:functionMyFunc(Param1,Param2:Integer;Param3:Real):Integer;
//函數(shù)參數(shù)間用分號隔開,括號外面的類型是函數(shù)的返回類型。
Begin
//函數(shù)的定義部分
End;
函數(shù)返回值有兩種賦值方法:
一種是直接對函數(shù)名賦值,另一種是賦值給Result變量。對函數(shù)名賦值將導(dǎo)致函數(shù)返回。Result是函數(shù)特有的局部變量,它的類型與函數(shù)的返回類型相同,對它的賦值等于對函數(shù)名賦值。與函數(shù)名不同,Result變量可以出現(xiàn)在賦值號的右邊,如果函數(shù)名出現(xiàn)在賦值號的右邊時(shí),則意味著遞歸調(diào)用,也就是函數(shù)調(diào)用它自己。
另外,對Result賦值不一定導(dǎo)致函數(shù)返回,如:
functionMyFunc(s:Integer):Integer;
Begin Result:=Result*s;//執(zhí)行賦值但不返回。
MyFunc:=s*s;//賦值后程序返回。
End;
例2:
functionMyFunc():Integer;
Begin
Result:=Result+5;//如果使用MyFunc():=MyFunc()+5;將導(dǎo)致死循環(huán)。
End;
[delphi] view plain copy
functionMyFunc(s:Integer):Integer;
Begin Result:=Result*s;//執(zhí)行賦值但不返回。
MyFunc:=s*s;//賦值后程序返回。
End;例2:
functionMyFunc():Integer;
Begin
Result:=Result+5;//如果使用MyFunc():=MyFunc()+5;將導(dǎo)致死循環(huán)。
End;