Aller au contenu
DrPepper

Questions sur codage LUA

Recommended Posts

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 !
 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !!
---------

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites



Envoyé de mon BND-L21 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci de vos réponse, mais cela ne marche pas. C'est pourtant ce que j'avais essayé avant.
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Qu est ce qui ne fonctionne pas? L api.post ?

Envoyé de mon BND-L21 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans ce cas rajoute les ["truc"] et ça devrait être bon :)

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×