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