Share via


function, instruction

Déclare une nouvelle fonction. L'instruction peut être utilisée dans plusieurs contextes :

// 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]

Arguments

  • attributes
    Facultatif. Attributs qui contrôlent la visibilité et le comportement de la méthode.

  • modifiers
    Facultatif. Modificateurs qui contrôlent la visibilité et le comportement de la méthode.

  • functionname
    Obligatoire. Nom de la fonction ou de la méthode.

  • paramlist
    Facultatif. Liste, délimitée par des virgules, de paramètres pour la fonction ou la méthode. Chaque paramètre peut inclure une annotation de type. Le dernier paramètre peut être un tableau de paramètres (parameterarray), indiqué par trois points (...) suivis du nom d'un tableau de paramètres et d'une annotation de type d'un tableau typé.

  • type
    Facultatif. Type de retour de la méthode.

  • body
    Facultatif. Une ou plusieurs instructions qui définissent le mode de fonctionnement de la fonction ou de la méthode.

Notes

Employez l'instruction function pour déclarer une fonction destinée à un usage futur. Le code contenu dans body n'est pas exécuté avant que la fonction ne soit appelée à partir d'un autre emplacement dans le script. L'instruction return est utilisée pour retourner une valeur de la fonction. Vous ne devez pas obligatoirement utiliser une instruction return, le programme retourne une valeur lorsqu'il arrive à la fin de la fonction.

Les méthodes sont similaires aux fonctions globales, à la seule différence que leur portée est limitée à la classe ou l'interface dans laquelle elles sont définies et qu'elles peuvent avoir de nombreux modificateurs contrôlant leur visibilité et leur comportement. Une méthode figurant dans une interface ne peut pas avoir de corps tandis qu'une méthode d'une classe doit en avoir un. Il existe une seule exception à cette règle : lorsqu'une méthode d'une classe est abstract ou que la classe est abstract, la méthode ne peut avoir de corps.

Vous pouvez utiliser l'annotation de type pour déclarer le type de données qui doit être retourné par la fonction ou la méthode. Si le type de retour spécifié est void, aucune valeur ne peut être retournée par aucune des instructions return figurant au sein de la fonction. Pour tous les types de retour autres que void, toutes les instructions return de la fonction doivent retourner une valeur qui peut être convertie dans le type de retour spécifié. La valeur undefined est retournée si un type de retour est spécifié, mais qu'une instruction return apparaît sans valeur ou si programme atteint la fin de la fonction sans rencontrer d'instruction return. Les fonctions constructeurs ne peuvent pas spécifier de type de retour, dans la mesure où l'opérateur new retourne automatiquement l'objet qui est créé.

Si aucun type de retour explicite n'est spécifié pour la fonction, le type de retour attribué est Object ou void. Le type de retour void est sélectionné uniquement lorsqu'il n'existe pas d'instructions return ou que celles-ci apparaissent sans valeur dans le corps de la fonction.

Il est possible d'utiliser un tableau de paramètres comme dernier paramètre d'une fonction. Tout argument supplémentaire éventuel passé à la fonction après les paramètres requis est entré dans le tableau de paramètres. L'annotation de type du paramètre n'est pas facultative ; il doit s'agir d'un tableau typé. Pour accepter des paramètres de types arbitraires, utilisez Object[] comme tableau typé. Lors de l'appel d'une fonction qui peut accepter un nombre variable d'arguments, il est possible d'utiliser un tableau explicite du type attendu plutôt que de fournir une liste de paramètres.

Lorsque vous appelez une fonction, veillez à toujours inclure les parenthèses ainsi que tous les arguments requis. Si vous omettez les parenthèses, c'est le texte de la fonction qui est retourné à la place du résultat de la fonction.

Exemple 1

L'exemple ci-dessous illustre l'utilisation de l'instruction function dans la première syntaxe :

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

Le résultat généré par le programme est le suivant :

25
This is blank.
This is blank.

Exemple 2

Dans cet exemple, une fonction printFacts prend, comme entrées, String et un tableau de paramètres utilisé pour accepter un nombre variable d'objets Objects.

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

Ce programme affiche le résultat suivant lorsqu'il est exécuté :

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

Configuration requise

Version 1 (pour la syntaxe 1)Version .NET (pour les syntaxes 2 et 3)

Voir aussi

Référence

new, opérateur

class, instruction

interface, instruction

return, instruction

Concepts

Portée des variables et des constantes

Annotation de type

Tableaux typés

Autres ressources

Modificateurs