Aller au contenu

Questions sur codage LUA


Messages recommandés

Posté(e)

Bonjour à tous !

 

Je cherche à modifier mon code actuel (désolé si je suis dans la mauvaise section) ...

Je cherche à remplacer ce code :

api.post('/mobile/push',{
	["message"]=push.message,
	["mobileDevices"]={push.id},
 	["title"]=tostring(push.titre),
	["category"]='RUN_CANCEL',
	["data"]={["sceneId"]=push.idScene}
})

par :

 

api.post('/mobile/push',push)

où push serait une table que je construis avant :

local push = {}

Sauf que je n'arrive pas à insérer les valeurs dans cette table push ...

 

Avez vous une idée ?

 

table.insert(push, .........)


Là, je sèche un peu.

Je veux bien un peu d'aide !
 

Posté(e) (modifié)

il faudrait chercher je pense du côté des tables JSON avec encode/decode

 

sans avoir tester un truc du genre

 

local push = {
	["message"]=push.message,
	["mobileDevices"]={push.id},
 	["title"]=tostring(push.titre),
	["category"]='RUN_CANCEL',
	["data"]={["sceneId"]=push.idScene}
}

api.post('/mobile/push',json.encode(push))

 

Modifié par jjacques68
  • Like 1
Posté(e)

Je vais faire le test, mais la question est plus comment je fait des inserts de lignes dans le tableau, puisque je veux déclarer une fois un tableau vide en début de code, et ensuite ajouter ligne par ligne ?

 

C'est plus cela ma question !

Posté(e)

Bonjour,

 

Est-cela que tu veux faire ?


 

Citation

 

local push = {}
push.message = "Bienvenue"
table.insert(push,push.message)
for i,v in ipairs(push) do
print(v)
end
print("---------")

push.id = 92
table.insert(push, push.id)
for i,v in ipairs(push) do
print(v)
end
print("---------")

push.titre = "Attention Attention !!"
table.insert(push, push.titre)
for i,v in ipairs(push) do
print(v)
end
print("---------")

 

Debug

 

Citation

Bienvenue
---------
Bienvenue
92
---------
Bienvenue
92
Attention Attention !!
---------

 

Posté(e)

Le table.insert(), je pense que ce n'est utile que si tu veux insérer un élément à un endroit précis du tableau, donc entre 2 éléments déjà existants dans le tableau. C'est assez rare d'avoir besoin de respecter un ordre bien précis... D'autant plus que plusieurs instructions en LUA comme les boucles for ... in pairs(...) n'en tiennent pas compte et mélangent d'elles mêmes l'ordre des éléments.

 

Dans le cas présent, tu te moques de l'ordre des éléments, donc tu peux les définir directement comme ceci, ça devrait fonctionner (pas testé) :

local push = {}
push.message = "Hello World"
push.mobileDevices = {}
push.mobileDevices[1] = 127
push.title = "Titre"
push.category = 'RUN_CANCEL'
push.data = {}
push.data.sceneId = 73

api.post('/mobile/push', push)

 

Note : pas besoin de json.encode() avec la fonction api.post(), on lui donne directement un tableau, et il s'occupera en interne de faire le json.encode pour générer la requête complète vers l'API.

  • Like 1
Posté(e)

Je n'ai mis le table.insert() que pour lui montrer le fonctionnement vu sa question et la boucle pour lui montrer le debug :-).


Envoyé de mon BND-L21 en utilisant Tapatalk

  • Like 1
Posté(e)

Oui, je n'arrive pas à créer par implémentation (inset ou autre) un tableau équivalent à :

 

local push = {
	["message"]=push.message,
	["mobileDevices"]={push.id},
 	["title"]=tostring(push.titre),
	["category"]='RUN_CANCEL',
	["data"]={["sceneId"]=push.idScene}
}

 

 

Car cela, ci-dessous, ca marche pas, il faut les ["truc"] :

 

local push = {}
push.message = "Hello World"
push.mobileDevices = {}
push.mobileDevices[1] = 127
push.title = "Titre"
push.category = 'RUN_CANCEL'
push.data = {}
push.data.sceneId = 73

api.post('/mobile/push', push)

 

×
×
  • Créer...