Aller au contenu
JossAlf

Aide Sur Les Variables Locales

Recommended Posts

Un abus de langage de la part de Fibaro concernant les "variables globales" a embrouillé notre ami ici. Mais oui tu as raison Lazer pour le concept ;), la notion de portée des variables c'est la base. Et pour te rejoindre j'ajouterais bien que l'absence de typage des variables * n'arrange pas les choses d’ailleurs il peut-être utile parfois de vérifier le type d'une variable avant de l'utiliser !

 

* LUA utilise un typage dynamique c'est à  dire que le type est défini automatiquement en fonction de la valeur.

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui c'est perturbant du coup le côté permissif... j'avais pas mesuré tout la portée de la chose...

Partager ce message


Lien à poster
Partager sur d’autres sites

Portée des variables LUA (en anglais) : http://www.lua.org/pil/4.2.html

 

 

Contrôle de type de variable : http://www.lua.org/pil/2.html

local id = 1

if ( type(id) == "number" ) then
  
   local booo = 1 + id
   fibaro:debug(booo) --- 2 

else

   -- J'en fait quoi moi de ce truc bizarre qui n'est même pas numérique.

end
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci encore à  tous ! Tout s'éclaire enfin.

 

En tout cas je me rends compte qu'avec mon incompréhension de l'utilisation du panneau de variables, je me bornais à  déclarer toutes mes variables au fil de mon code en LOCALE et déclarais mes variables globales dans le panneau de variables !!! Pffff le boulet !  :huh:  Tu m'étonnes que je me soit pris le mur hier soir !

 

Je vais pouvoir enfin revenir à  une utilisation normale du LUA sans réinventer la portée des variables !  :D

Je commençais à  devenir fou là .

 

Au sujet de la portée des variables, tout est là  :

http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/LUA_Scope_Variables.html

 

Extrait :

Portées des variables, définition

Les programmes sont morcelés en unités de code, comme pour les fonctions et les modules.

Dans ces unités nous pouvons créer des variables et leur affecter des valeurs de sorte que nous puissions traiter des données et faire que le programme exécute une tâche donnée. Pour un certain nombre de raisons (conflits de noms, information cahée, etc...) nous pouvons vouloir isoler des variables dans les unités. Nous pouvons également vouloir créer des variables provisoires pour une tâche qui peuvent être supprimées une fois celle-ci terminée.

Le terme "unité" est peu un vague. Nous employons le terme portée des variables pour décrire le jeu de code dans lequel un ensemble de variables sont disponible.

Les variables auxquels nous avons accès sont dites visibles. La portée d'une variable est le bloc contenant le code dans lequel elle est visible. Les portées sont créées et détruites pendant que le programme exécute ces blocs de code. Les variables contenues dans ces blocs sont créées et détruites selon les règles décrites ci-après. Quand nous écrivons un bloc et une nouvelle portée nous écrivons une portée localeLes portées externes sont visibles des portées locale mais pas le contraire.

Partager ce message


Lien à poster
Partager sur d’autres sites

Steven. ;)

 

T'es tordu hein ?!  oups Je suis tordu mais toi aussi...  ;)

  1. -- J'en fait quoi moi de ce truc bizarre qui n'est même pas numérique.
Modifié par JossAlf
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Je crois que je vais me reposer un peu. Vous imaginez même pas les noeuds au cerveau que je viens de me faire. J'avais seulement rayé l'usage normal des variables globales à  cause de ce foutu panneau de variables ... 

 

Vous imaginez programmer sans globale ?!  :13:   Put... j'ai du mérite que mes codes tournent !!! Arf je flippe à  l'idée d'en reprendre certains...  :wub:

Partager ce message


Lien à poster
Partager sur d’autres sites

Tiens je vois plus comment indiquer que le sujet est résolu ? (Faut que je me repose ...)  :huh:

Partager ce message


Lien à poster
Partager sur d’autres sites

Je programme sans aucune global enfin presque ... enfin sauf une ... celle qui fait tout   ;)

 

if (not GEA) then
   GEA = {}
   GEA.version = 3.30
   GEA.checkEvery = 30
   ...
   GEA.add = function(id, secondes, message, ...)
      ...
   end
end
 
Seule la variable GEA est global tout le reste est local à  la variable GEA. Allez fait moi plaisir ... dis moi que je rajoute des noeuds à  ton cerveau :)
 
 
:D  :93:  :D
 
:98:

Partager ce message


Lien à poster
Partager sur d’autres sites

Ha tu me cherches hein ?!

 

Un autre truc dans le genre tordu :   ;)

player = "001"
local player = "003"
fibaro:debug(player)

Affichage du debug : 003 (c'est donc la locale qui est retenue puisque la dernière déclarée)

 

Mais je fais comment pour retrouver ma Globale ?  001  ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu lui donnes un nom différent, comme ça pas d’ambiguïté

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui c'est sur ! ;)

 

Mais j'attends qd même la réponse de Steven !  :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah mais t'es aussi tordu que lui en fait ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
function getPlayer() return player end

player = "001"
local player = "003"

fibaro:debug(player)
fibaro:debug(getPlayer())

Lol

Partager ce message


Lien à poster
Partager sur d’autres sites

pfff   :60: (tu as a mis une majuscule à  player -> Ca peut pas marcher)    :P

 

Bon allé j'arrête :)

 

@Lazer    :rolleyes:

 

Merci encore à  tous.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci JossAlf d'avoir bien rédigé ce qui te torturait le cerveau et d'avoir illustré les réponses par plusieurs exemples ^^

J'y vois plus clair aussi! J'avais un début de réponse dans la tête mais des choses m'échappaient aussi! J'ai enfin eu le temps de me poser pour lire la suite de ton investigation!

Merci aux maîtres Steven et Krikroff forcément :60: :60: :60:

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Houla Tom ! V'la le petit déterrage :)

Merci pour ta reconnaissance ;)

Envoyé de mon iPhone àl'aide de Tapatalk

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×