Il s'agit d'un test conditionnel, qui doit se lire de la façon suivante.
Mais revenez un instant, à la notion de "portée lexicale".
A l'intérieur de la structure de contrôle suivante, regardez où se situent les différents " blocs "?
Les variables local définies dans chaque bloc, ne seront accessibles qu'à l'intérieur du bloc qui les contient...
Les variables ( locales ou globales ) définies à l'extérieur du bloc0 if ... end, seront accessibles dans n'importe quel autre bloc, le 1, 2 ou 3.
elsif permet de faire plusieurs tests les uns à la suite des autres dans une même boucle if ... end
C'est la même chose que plusieurs boucles successives, mais c'est plus compact, plus clair et ça limite le nombre de end.
Et pour terminer ce chapitre, un petit extrait d'un programme quelconque, simplement en tant qu'exemple et pour illustrer ces propos:
if document.index < index then -- Si condition inférieure on fait ça elseif document.index == index then -- Si condition égale on fait cela elseif document.index > index then -- Si condition plus grand que on fait ceci else -- Et en dernier ressort, (certainement un 'bug'?) -- alors on fait ça end