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