Salut à vous,
Il y a réèllement un truc qui m'echappe à ce niveau du cours

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
list = {}            
function list.new()
  return {first = 0, last = -1}
end
 
function List.pushleft(list, value)
  local first = list.first - 1
  list.first = first
  list[first] = value
end
 
function List.pushright(list, value)
  local last = list.last + 1
  list.last = last
  list[last] = value
end
 
function List.popleft(list)
  local first = list.first
  if first > list.last then error("liste vide") end
  local value = list[first]
  list[first] = nil   -- à la corbeille
  list.first = first + 1
  return value
end
 
function List.popright(list)
  local last = list.last
  if list.first > last then error("liste vide") end
  local value = list[last]
  list[last] = nil    -- à la corbeille
  list.last = last - 1
  return value
end
mes soucis sont en plusieurs étapes:
1) la premère fonction c'est list.new() et la suivante List.pushleft()
Est-ce bien normal la "l" et "L" ?

2) avec puis pas de soucis je constate bien la création de mes deux cases (first et last)
Impossible de faire fonctionner aucune des 4 autres (même en m'amusant à passer de petit "l" à grand "L" sur toutes les lignes)

3) si on prend le push left, comme toutes les variables s'appelent first c'est vraiment le bordel et j'ai pas réussi à modifier les noms pour mieux comprendre (et comme je ne parviens pas à faire fonctionner la fonction ca m'aide pas non plus).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
local first = list.first - 1 --nouvelle var locale first égale à l'adresse mémoire de list.first - 1 (soit une case en arrière ok)
list.first = first --assignation de la nouvelle adresse mémoire à list.first
list[first] = value --on vient de changer son adresse mémoire donc .......
Enfin bon je suis un peu pommé sur ce coup là ^^
Merci beaucoup de votre aide !!