Aller au contenu

Question Developpeur Array, Objets, Efficacité


Messages recommandés

Posté(e)

Bonjour,

J'utilise depuis peu un développement du style: mais je me demande s'il n'y a pas mieux/plus efficace..

function Engine:test2(debugmessage)

voici un petit test:



Engine = {}; 

Engine.var1 = "petit test 2";
Engine.list1 = {"bonjour", "demain"};


Engine.test = function(debugmessage)
	fibaro:debug(debugmessage)
end

function Engine:test2(debugmessage)
	fibaro:debug(debugmessage)
end

Engine:test(Engine.var1)
Engine.test(Engine.var1)
Engine:test(Engine.list1)
Engine.test(Engine.list1)
fibaro:debug("----------------------------")
Engine:test2(Engine.var1)
Engine.test2(Engine.var1)
Engine:test2(Engine.list1)
Engine.test2(Engine.list1)

ce qui donne:

[DEBUG] 16:54:38: table: 0x94c1e68
[DEBUG] 16:54:38: petit test 2
[DEBUG] 16:54:38: table: 0x94c1e68
[DEBUG] 16:54:38: table: 0x94c29d8
[DEBUG] 16:54:38: ----------------------------
[DEBUG] 16:54:38: petit test 2
[DEBUG] 16:54:38: nil
[DEBUG] 16:54:38: table: 0x94c29d8
[DEBUG] 16:54:38: nil

Quelle est la méthode la plus efficace ?

Je vois que @steven utilise dans gea cette méthode-ci:

Engine.test = function(debugmessage)
 
 
 
Posté(e)

Peut importe en fait au niveau performance c'est pareil et donc tout aussi efficace.

 

Mais attention [.] et [:] entre l'espace de nom (ici en LUA une table) et la définition de la fonction ne donne pas le même résultat.

 

Pour mémoire:

function Engine:test(debugmessage) end

équivaut à 

Engine.test = function(self, debugmessage) end

self représente ici Engine permet d’accéder directement aux "membres" de cette table :), en lua le fait d'utiliser l'opérateur [:] oblige la table à  ce passer elle en argument (en référence) lorsqu'elle appelle la méthode.

Posté(e)

Merci krikroff, pas sur d'avoir saisi toutes les nuances de ta réponse, mais le principal c'est que ce soit équivalent :-)

Je pense que je vais utiliser àl'avenir le [.] .... C'est plus joli ;-)

Sent from my Note4

×
×
  • Créer...