Contenu principal

global

Déclarer des variables comme globales

Description

Remarque

Les variables globales ne sont pas efficaces et rendent les erreurs difficiles à diagnostiquer. Utilisez plutôt une fonction avec des variables en entrée. Pour plus d’informations, consultez Avoid Unnecessary Copies of Data.

global var1 ... varN permet de déclarer les variables spécifiées avec une portée globale.

En règle générale, chaque fonction MATLAB® dispose de ses propres variables locales, qui sont distinctes de celles des autres fonctions et de celles de l’espace de travail de base. Toutefois, si plusieurs fonctions déclarent toutes un nom de variable particulier comme étant global, elles partagent toutes une seule copie de cette variable. Toute modification de valeur de cette variable dans n’importe quelle fonction est visible par toutes les fonctions qui la déclarent comme globale.

Si la variable globale n’existe pas la première fois que vous lancez l’instruction global, elle est initialisée sur une matrice 0x0 vide.

Si une variable portant le même nom que la variable globale existe déjà dans l’espace de travail actuel, MATLAB émet un avertissement et modifie la valeur et la portée de cette variable afin qu’elle corresponde à la variable globale.

exemple

Exemples

réduire tout

Dans votre dossier de travail courant, créez une fonction qui définit la valeur d’une variable globale.

function setGlobalx(val)
global x
x = val;

Dans votre dossier de travail courant, créez une fonction qui renvoie la valeur d’une variable globale. Ces deux fonctions disposent d’espaces de travail distincts, mais elles ont toutes les deux accès à la variable globale.

function r = getGlobalx
global x
r = x;

Définissez la valeur de la variable globale x et obtenez-la depuis un autre espace de travail.

setGlobalx(1138)
r = getGlobalx
r =

        1138

Attribuez une valeur à la variable globale à l’aide de la fonction définie dans l’exemple précédent.

clear all
setGlobalx(42)

Affichez la valeur x de chaque variable. Même si la variable est globale, elle n’est pas accessible depuis la ligne de commande.

x
Undefined function or variable 'x'.

Déclarez x comme variable globale depuis la ligne de commande et affichez sa valeur.

global x
x
x =

    42

Modifiez la valeur de x et utilisez la fonction définie dans l’exemple précédent pour renvoyer la valeur globale depuis un autre espace de travail.

x = 1701;
r = getGlobalx
r =

        1701

Conseils

  • Pour effacer une variable globale de tous les espaces de travail, utilisez clear global variable.

  • Pour effacer une variable globale de l’espace de travail courant uniquement, utilisez clear variable.

  • Les variables globales ont leur propre espace de travail qui est distinct de l’espace de travail de base et de celui des fonctions. Il n’est pas efficace d’utiliser des variables globales. MATLAB optimise la mémoire pour les variables en entrée des fonctions mais pas pour les variables globales. Pour plus d’informations, consultez Avoid Unnecessary Copies of Data.

    Par ailleurs, les variables globales comportent des risques importants. N’importe quelle fonction peut accéder à une variable globale et la mettre à jour. Les autres fonctions qui utilisent la variable peuvent renvoyer des résultats inattendus. Par exemple :

    • Si vous attribuez par mégarde le nom d’une variable globale qui existe déjà à une « nouvelle » variable globale, une fonction peut remplacer les valeurs attendues par une autre. Cette erreur est difficile à diagnostiquer.

    • Si une variable globale est modifiée dans plusieurs fonctions, le fait d’appeler ces fonctions dans un autre ordre peut produire des résultats différents.

    N’utilisez les variables globales qu’avec parcimonie, voire pas du tout. Pour plus d’informations sur les variables et l’espace de travail, consultez la sous-section « Global Variables » (Variables globales) de la page Share Data Between Workspaces.

Capacités étendues

développer tout

Historique des versions

Introduit avant R2006a