IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lua Discussion :

Parcours de tables imbriquées


Sujet :

Lua

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Parcours de tables imbriquées
    Bonjour,

    J'essaye de parcourir et d'afficher une table de tables de tables...

    Mon code est le suivant :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    local function arrayPrint(var, indent)
    	local k,v
    	local line
    	if(type(var)~="table") then
    		print(indent, tostring(var))
    		return
    	end
     
    	for k,v in pairs(var) do
    	-- for k,v in next, var do
    		if(type(k)=="string") then
    			line = string.format("['%s'] => ", k)
    		else
    			line = string.format("[%s] => ", tostring(k))
    		end
     
    		if(type(v)=="table") then
    			print(indent..line.."{")
    			arrayPrint(v, indent.."\t")
    			print(indent.."}")
    			return
    		else
    			print(indent..line..tostring(v))
    		end
    	end
    end
     
    -- Version simplifiée de https://eco.gamepedia.com/Module:CraftingRecipes
    local completeList = {
    	recipes = {
    		['Acorn Powder Recipe'] = {
    					['dispCraftStn'] = 1,
    					['checkImage'] = 1,
    					['craftStn'] = {'Mill',nil},
    					['item1'] = {'Acorn Powder',nil,'1'},
    					['item2'] = {nil},
    					['skillNeed'] = {'Mill Processing',nil,'4'},
    					['mater1'] = {'Acorn',nil,'10'},
    					['mater2'] = {nil},
    					['mater3'] = {nil},
    					['mater4'] = {nil},
    					['ctime'] = '5 minutes',
    					['affSkill1'] = {'Mill Processing Efficiency',nil},
    					['affSkill2'] = {'Mill Processing Speed',nil},
    					},
    		['Charred Corn Recipe'] = {
    					['dispCraftStn'] = 1,
    					['checkImage'] = 1,
    					['craftStn'] = {'Campfire',nil},
    					['item1'] = {'Charred Corn',nil,'1'},
    					['item2'] = {nil},
    					['skillNeed'] = {'Campfire Cooking',nil,'2'},
    					['mater1'] = {'Corn',nil,'3'},
    					['mater2'] = {nil},
    					['mater3'] = {nil},
    					['mater4'] = {nil},
    					['ctime'] = '2 minutes',
    					['affSkill1'] = {'Campfire Cooking Efficiency',nil},
    					['affSkill2'] = {'Campfire Cooking Speed',nil},
    					},
    	},
    	items = {
    		['Acorn'] = { 'Acorn Powder Recipe', },
    		['Acorn Powder'] = { 'Acorn Powder Recipe', },
    		['Charred Corn'] = { 'Advanced Campfire Cooking Skill Book Recipe', 'Charred Corn Recipe', },
    		['Corn'] = { 'Campfire Stew Recipe', 'Charred Corn Recipe', 'Mixed Vegetable Medley Recipe', },
    	},
    	tables = {
    		['Campfire'] = { 'Charred Corn Recipe', },
    		['Mill'] = { 'Acorn Powder Recipe', },
    	},
    	groups = {
    		['Food'] = { 'Acorn Powder Recipe', 'Charred Corn Recipe', },
    		['World Object Items'] = { 'Campfire Recipe', 'Mill Recipe',  },
    	},
    }
     
    -- Utilisation de la table
    local recipeList = completeList.recipes
     
    print("######## START PRINT FULL LIST 1 ########")
    arrayPrint(recipeList, "")
    print("######## END PRINT FULL LIST 1 ########")
    print("")
    print("######## START PRINT Charred Corn Recipe ########")
    arrayPrint(recipeList['Charred Corn Recipe'],"")
    print("######## START PRINT Charred Corn Recipe ########")
    print("")
    print("######## START PRINT FULL LIST 1 ########")
    arrayPrint(recipeList, "")
    print("######## END PRINT FULL LIST 1 ########")
    Je n'arrive pas à comprendre :
    1. Pourquoi il n'affiche pas toute la table.
      • Sur le web j'ai pu voir qu'il pouvais y avoir des problèmes lors du parcours de table avec pairs ... mais uniquement si l'on modifie la table pendant le parcours. Or je ne fait que de l'affichage
      • Dans la fonction "arrayPrint" j'ai essayé de remplacer "pairs" par "next" (lignes 9-10) mais cela ne fonctionne pas mieux.
      • J'ai pensé que certaines valeurs pouvaient être écrasées lors de la création de la table dans la RAM mais les valeurs non affichées sont belles et bien accessibles si on les demandent manuellement. Et, même après avoir affiché une valeur en y accédant manuellement, le programme ne l'affiche plus...
    2. Pourquoi il n'affiche pas la même chose lors de plusieurs exécutions successives du fichier...


    Si quelqu'un à des explications sur ce comportement je suis preneur.
    Note 1 : j'ai essayé de mettre le fichier source pièce jointe mais le site me dit que le fichier est invalide...
    Note 2 : j'ai essayé avec plusieurs compilations de lua pour windows mais toutes donnent le même résultat. (Sauf LuaDist qui crache toujours la même sortie)

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Je suis un boulet
    En fait je suis un boulet . Je sais pas pourquoi j'ai mis un "return" à la ligne 21...

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Citation Envoyé par Naheulf Voir le message
    Note 1 : j'ai essayé de mettre le fichier source pièce jointe mais le site me dit que le fichier est invalide...
    Si je me souviens bien, on ne peut pas attacher directement de fichier *.lua. Il faut le mettre dans un fichier *.zip, ou changer l'extension en *.txt.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/03/2006, 16h38
  2. [Oracle] DLM + table imbriquée
    Par ffomnislash dans le forum Oracle
    Réponses: 2
    Dernier message: 22/02/2006, 18h12
  3. [CSS] div et de table imbriquées
    Par Gwipi dans le forum Mise en page CSS
    Réponses: 16
    Dernier message: 21/11/2005, 15h06
  4. Réponses: 19
    Dernier message: 23/12/2004, 13h01
  5. Accéder au contenu d'une table imbriquée
    Par scott_tiger dans le forum Oracle
    Réponses: 18
    Dernier message: 22/12/2004, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo