Freigeben über


function-Anweisung

Deklariert eine neue Funktion. Diese Anweisung kann in verschiedenen Kontexten verwendet werden:

// in the global scope
function functionname([paramlist]) [: type] {
   [body]
}

// declares a method in a class
[attributes] [modifiers] function functionname([paramlist]) [: type] {
   [body]
}

// declares a method in an interface
[attributes] [modifiers] function functionname([paramlist]) [: type]

Argumente

  • attributes
    Optional. Attribute, die die Sichtbarkeit und das Verhalten der Methode steuern.

  • Modifizierer
    Optional. Modifizierer, die die Sichtbarkeit und das Verhalten der Methode steuern.

  • functionname
    Erforderlich. Der Name der Funktion oder Methode.

  • paramlist
    Optional. Eine Parameter mit Kommas als Trennzeichen für die Funktion oder die Methode. Jeder Parameter kann eine Typspezifikation aufweisen. Der letzte Parameter kann ein parameterarray sein, das durch drei Punkte (...) gekennzeichnet ist, gefolgt von einem Parameterarraynamen und der Typanmerkung für ein typisiertes Array.

  • type
    Optional. Der Rückgabetyp der Methode.

  • body
    Optional. Eine oder mehrere Anweisungen, die die Arbeitsweise der Funktion oder Methode definieren.

Hinweise

Verwenden Sie die function-Anweisung, um eine Funktion für den späteren Gebrauch zu deklarieren. Der in body enthaltene Code wird erst ausgeführt, wenn die Funktion von anderer Stelle im Skript aus aufgerufen wird. Die return-Anweisung wird für die Rückgabe eines Werts aus der Funktion verwendet. Sie müssen keine return-Anweisung verwenden, da diese vom Programm zurückgegeben wird, wenn es an das Ende der Funktion gelangt.

Methoden ähneln globalen Funktionen, mit dem Unterschied, dass ihr Gültigkeitsbereich die class oder interface ist, in der sie definiert sind, und mehrere Modifizierer aufweisen können, die ihre Sichtbarkeit und ihr Verhalten steuern. Eine Methode in einer interface kann keinen Rumpf haben, während eine Methode in einer class einen Rumpf haben muss. Zu dieser Regel besteht jedoch eine Ausnahme: Wenn eine Methode in einer Klasse abstract ist oder wenn die Klasse abstract ist, kann die Methode keinen Rumpf haben.

Sie können anhand der Typanmerkung deklarieren, welchen Datentyp die Funktion oder Methode zurückgibt. Wird void als Rückgabetyp angegeben, kann keine der return-Anweisungen innerhalb der Funktion einen Wert zurückgeben. Wird ein anderer Rückgabetyp als void angegeben, müssen alle return-Anweisungen in der Funktion einen Wert zurückgeben, der in den angegebenen Rückgabetyp umgewandelt werden kann. Der Wert undefined wird zurückgegeben, wenn zwar ein Rückgabetyp angegeben wurde, jedoch eine return-Anweisung ohne einen Wert vorkommt oder das Ende der Funktion ohne eine return-Anweisung erreicht wird. Konstruktorfunktionen können keinen Rückgabetyp angeben, da der Operator new automatisch das zu erstellende Objekt zurückgibt.

Wenn kein expliziter Rückgabetyp für die Funktion angegeben wurde, wird der Rückgabetyp entweder auf Object oder auf void gesetzt. Der void-Rückgabetyp wird nur gewählt, wenn keine return-Anweisungen vorhanden sind oder die return-Anweisungen ohne einen Wert im Funktionsrumpf vorkommen.

Ein Parameterarray kann als der letzte Parameter einer Funktion verwendet werden. Alle weiteren Argumente, die ggf. nach den erforderlichen Parametern an die Funktion übergeben werden, werden in das Parameterarray eingefügt. Die Typanmerkung für den Parameter ist nicht optional, sie muss ein typisiertes Array sein. Damit Parameter beliebiger Typen akzeptiert werden, verwenden Sie Object[] als typisiertes Array. Beim Aufrufen einer Funktion, die eine variable Anzahl an Argumenten annehmen kann, kann anstelle einer Liste von Parametern ein explizites Array des erwarteten Typs verwendet werden.

Achten Sie beim Aufrufen einer Funktion stets darauf, dass die Klammern sowie alle erforderlichen Argumente angegeben sind. Das Aufrufen einer Funktion ohne Klammern führt dazu, dass der Text der Funktion, nicht jedoch das eigentliche Ergebnis des Funktionsaufrufes zurückgegeben wird.

Beispiel 1

Das folgende Beispiel veranschaulicht die Verwendung der function-Anweisung in der ersten Syntax:

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());

Ausgabe dieses Programms:

25
This is blank.
This is blank.

Beispiel 2

In diesem Beispiel akzeptiert die printFacts-Funktion als Eingabe ein String und verwendet ein Parameterarray, um eine variable Anzahl an Objects anzunehmen.

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]);

Beim Ausführen dieses Programms wird Folgendes ausgegeben:

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

Anforderungen

Version 1 (für Syntax 1)Version .NET (für Syntax 2 und 3)

Siehe auch

Referenz

new-Operator

class-Anweisung

interface-Anweisung

return-Anweisung

Konzepte

Gültigkeitsbereich von Variablen und Konstanten

Typanmerkung

Typisierte Arrays

Weitere Ressourcen

Modifizierer