聲明 Function 過(guò)程的名稱,參數(shù)以及構(gòu)成其主體的代碼。 語(yǔ)法 [Public | Private | Friend] [Static] Function name [(arglist)] [As type] End Function Function 語(yǔ)句的語(yǔ)法包含下面部分:
其中的 arglist 參數(shù)的語(yǔ)法以及語(yǔ)法各個(gè)部分如下: [Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]
說(shuō)明 如果沒(méi)有使用 Public、Private 或 Friend 顯式指定,則 Function 過(guò)程缺省為公用。如果沒(méi)有使用 Static,則局部變量的值在調(diào)用之后不會(huì)保留。Friend 關(guān)鍵字只能在類模塊中使用。但 Friend 過(guò)程可以被工程的任何模塊中的過(guò)程訪問(wèn)。Friend 過(guò)程不會(huì)在其父類的類型庫(kù)中出現(xiàn),且 Friend 過(guò)程不能被后期綁定。 注意 Function 過(guò)程可以是遞歸的;也就是說(shuō),該過(guò)程可以調(diào)用自己來(lái)完成某個(gè)特定的任務(wù)。不過(guò),遞歸可能會(huì)導(dǎo)致堆棧上溢。通常 Static 關(guān)鍵字和遞歸的 Function 過(guò)程不在一起使用。 所有的可執(zhí)行代碼都必須屬于某個(gè)過(guò)程。不能在另外的 Function、Sub 或 Property 過(guò)程中定義 Function 過(guò)程。 Exit Function 語(yǔ)句使執(zhí)行立即從一個(gè) Function 過(guò)程中退出。程序接著從調(diào)用該 Function 過(guò)程的語(yǔ)句之后的語(yǔ)句執(zhí)行。在 Function 過(guò)程的任何位置都可以有 Exit Function 語(yǔ)句。 Function 過(guò)程與 Sub 過(guò)程的相似之處是: Function 過(guò)程是一個(gè)可以獲取參數(shù),執(zhí)行一系列語(yǔ)句,以及改變其參數(shù)值的獨(dú)立過(guò)程,而與子過(guò)程不同的是:當(dāng)要使用該函數(shù)的返回值時(shí),可以在表達(dá)式的右邊使用 Function 過(guò)程,這與內(nèi)部函數(shù),諸如 Sqr、Cos 或 Chr 的使用方式一樣。 在表達(dá)式中,可以通過(guò)使用函數(shù)名,并在其后用圓括號(hào)給出相應(yīng)的參數(shù)列表來(lái)調(diào)用一個(gè) Function 過(guò)程。請(qǐng)參閱 Call 語(yǔ)句關(guān)于如何調(diào)用 Function 過(guò)程的詳細(xì)說(shuō)明。 要從函數(shù)返回一個(gè)值,只需將該值賦給函數(shù)名。在過(guò)程的任意位置都可以出現(xiàn)這種賦值。如果沒(méi)有對(duì) name 賦值,則過(guò)程將返回一個(gè)缺省值:數(shù)值函數(shù)返回 0,字符串函數(shù)返回一個(gè)零長(zhǎng)度字符串 (""),Variant 函數(shù)則返回 Empty。如果在返回對(duì)象引用的 Function 過(guò)程中沒(méi)有將對(duì)象引用賦給 name (通過(guò) Set),則函數(shù)返回 Nothing。 下面的示例說(shuō)明如何給一個(gè)名為
在 Function 過(guò)程中使用的變量分為兩類:一類是在過(guò)程內(nèi)顯式聲明的,另一類則不是。在過(guò)程內(nèi)顯式聲明的變量(使用 Dim 或等效方法)都是局部變量。對(duì)于那些沒(méi)有在過(guò)程中顯式聲明的變量,除非它們?cè)谠撨^(guò)程外更高級(jí)別的位置有顯示地聲明,否則也是局部的。 注意 過(guò)程可以使用沒(méi)有在過(guò)程內(nèi)顯式聲明的變量,但只要有任何在模塊級(jí)別中定義的名稱與之相同,就會(huì)產(chǎn)生名稱沖突。如果過(guò)程中使用的未聲明的變量與另一個(gè)過(guò)程,常數(shù),或變量的名稱相同,則會(huì)認(rèn)為過(guò)程使用的是模塊級(jí)的名稱。顯式聲明變量就可以避免這類沖突??梢允褂?Option Explicit 語(yǔ)句來(lái)強(qiáng)制顯式聲明變量。 注意 Visual Basic 可能會(huì)重新安排數(shù)學(xué)表達(dá)式以提高內(nèi)部效率。若 Function 過(guò)程會(huì)改變某個(gè)數(shù)學(xué)表達(dá)式中變量的值,則應(yīng)避免在此表達(dá)式中使用該函數(shù)。 |
|