function 陳述式
更新:2007 年 11 月
宣告新函式。而且可以用於幾種內容中:
// in the global scope function functionname([parmlist]) [: type] { [body] } // declares a method in a class [attributes] [modifiers] function functionname([parmlist]) [: type] { [body] } // declares a method in an interface [attributes] [modifiers] function functionname([parmlist]) [: type]
引數
attributes
選擇項。控制方法之可視性和行為的屬性 (Attribute)。修飾詞
選擇項。控制方法之可視性和行為的修飾詞。functionname
必要項。函式或方法的名稱。paramlist
選擇項。函式或方法的參數清單 (以逗號分隔)。每一個參數可能包括一種型別規格。最後一個參數可以是 parameterarray,表示方法為三個句號 (...)、加上參數陣列名稱,再接著型別陣列的型別附註。type
選擇項。傳回方法的型別。body
選擇項。一或多個定義函式或方法之運作方式的陳述式。
備註
使用 function 陳述式可宣告函式供稍後使用。body 中包含的程式碼,會等到從指令碼中的其他位置呼叫函式之後才執行。return 陳述式是用來傳回函式的值。您不須使用 return 陳述式,當程式到達函式結尾時即會傳回。
方法與全域函式類似,但是他們會將範圍擴及進行定義的 class 或 interface,也可能有控制可視性與行為的不同修飾詞。interface 中的方法不能有內文,而 class 中的方法必須有本文。本規則有一項例外,如果 class 中的方法是 abstract 或 class 本身是 abstract,則方法不可以有本文。
您可以用型別附註來宣告函式或方法要傳回何種資料型別。如果指定傳回型別為 void,則函式內的任何 return 陳述式不會傳回任何值。如果指定 void 以外的傳回型別,則函式中的所有 return 陳述式必須傳回由特定傳回型別決定的值。如果已指定傳回型別,但是 return 陳述式不具有任何值,或是到達函式結尾時沒有 return 陳述式,則傳回 undefined 的值。建構函式不能指定傳回型別,因為 new 運算子會自動傳回所建立的物件。
如果沒有指定函式的明確傳回型別,則將傳回型別設為 Object 或 void。只有在函式本文中沒有 return 陳述式或 return 陳述式沒有值時,才會選取 void 傳回型別。
參數陣列可做為函式的最後一個參數。除了必要參數,任何傳送到函式的額外引數 (如果有的話) 都會輸入參數陣列。參數的型別附註不是選擇項,它必須是一個型別陣列。如果要接受任意型別的參數,請用 Object[] 做為型別陣列。呼叫一個可接受不同數目引數的函式時,可使用一個預期型別的明確陣列,以便提供參數的清單。
呼叫函式時,請確定您已包含括弧以及任何必要的引數。如果呼叫沒有括弧的函式,則會傳回函式的文字,而不是函式的結果。
範例 1
以下範例說明 function 陳述式第一種語法的使用方式:
interface IForm {
// This is using function in Syntax 3.
function blank() : String;
}
class CForm implements IForm {
// This is using function in Syntax 2.
function blank() : String {
return("This is blank.");
}
}
// This is using function in Syntax 1.
function addSquares(x : double, y : double) : double {
return(x*x + y*y);
}
// Now call the function.
var z : double = addSquares(3.,4.);
print(z);
// Call the method.
var derivedForm : CForm = new CForm;
print(derivedForm.blank());
// Call the inherited method.
var baseForm : IForm = derivedForm;
print(baseForm.blank());
本程式的輸出為:
25
This is blank.
This is blank.
範例 2
函式 printFacts 的輸入內容為 String 以及使用過的參數陣列,以接受 Object 的變數編號。
function printFacts(name : String, ... info : Object[]) {
print("Name: " + name);
print("Number of extra information: " + info.length);
for (var factNum in info) {
print(factNum + ": " + info[factNum]);
}
}
// Pass several arguments to the function.
printFacts("HAL 9000", "Urbana, Illinois", new Date(1997,0,12));
// Here the array is intrepeted as containing arguments for the function.
printFacts("monolith", [1, 4, 9]);
// Here the array is just one of the arguments.
printFacts("monolith", [1, 4, 9], "dimensions");
printFacts("monolith", "dimensions are", [1, 4, 9]);
程式在執行中會顯示以下輸出:
Name: HAL 9000
Number of extra information: 2
0: Urbana, Illinois
1: Sun Jan 12 00:00:00 PST 1997
Name: monolith
Number of extra information: 3
0: 1
1: 4
2: 9
Name: monolith
Number of extra information: 2
0: 1,4,9
1: dimensions
Name: monolith
Number of extra information: 2
0: dimensions are
1: 1,4,9
需求
1 版 (語法 1 適用) .NET 版本 (語法 2 及語法 3 適用)