µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Les fonctions
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide
Sujet précédent :: Sujet suivant  
Auteur Message
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Ven 10 Aoû 2012 - 14:41    Sujet du message: Les fonctions Répondre en citant

Bonjour.
Cela fait quelque temps que je m’intéresse aux fonctions, et que j'essaye de comprendre à partir de la libs, mais j'ai du mal.Est ce que quelqu'un saurait où trouver un tuto complet sur les fonctions?
(du genre qu'est ce que c'est que local function ou la difference entre
function fonction()
instruction
end
et
fonction={ fonction2=fonction()
instruction
end}
a par le fait que sa s'écrit fonction() et fonction.fonction2()
Merci d'avance!
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
Publicité






MessagePosté le: Ven 10 Aoû 2012 - 14:41    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Ven 10 Aoû 2012 - 15:37    Sujet du message: Les fonctions Répondre en citant

Hum, la question que tu pose là n'est pas vraiment en rapport direct avec les fonctions en fait.

Le deuxième exemple est la déclaration d'un tableau.

Une fonction est, plus ou moins, gérée comme une variable en Lua, donc on peut stocker des fonctions dans des tableaux (Ce qui est fait là).

Petit exemple d'un tableau avec diverses variables :

Code:
monTableau = {
   uneVariable = 0,
   uneAutre = "Hello world",
   uneFonction = function()
      return 5
   end,
   unTableauDansUnTableau = {},
}

Et donc, pour accéder aux éléments de "monTableau", tu peux faire comme tu l'as dis : monTableau.uneFonction(), ou encore monTableau.uneVariable.

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Ven 10 Aoû 2012 - 16:54    Sujet du message: Les fonctions Répondre en citant

Merci.
Mais comment faire pour avoir une fonction avec plusieurs  options , du genre fonction.mode1, fonction.mode2...
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
Lolman
Modérateur

Hors ligne

Inscrit le: 02 Aoû 2011
Messages: 811

MessagePosté le: Ven 10 Aoû 2012 - 21:57    Sujet du message: Les fonctions Répondre en citant

Il faut faire deux fonctions différents : fonctionMode1() et fonctionMode2(). Tu cherches peut-être les fonctions polymorphiques en terminologie Haskell ou virtuelles en terminologie C++ quand tu veux dire "fonction.mode1, fonction.mode2". Dis-nous pour quel code tu en as besoin ; demande-nous une solution à ton problème au lieu de demander de corriger ce que tu penses en être la solution (grosse nuance).

A noter qu'en Haskell comme dans beaucoup de langages fonctionnels, les variables, les boucles, les conditions, et d'autres choses sont des fonctions, d'où de nom "fonctionnel".
En Haskell par exemple, les fonctions sont beaucoup plus puissantes. On peut les composer pour en créer de nouvelles, les appliquer partiellement, les passer en argument. map est une fonction qui prend en argument une fonction et une liste et retourne une nouvelle liste en ayant appliqué la fonction donnée en premier paramètre sur chaque élément de la liste. Par exemple : `map (*2) [1..5]` retourne `[2, 4, 6, 8, 10]` et `map toUpper "hello"` retourne `HELLO`. `map` est une fonction dite d'ordre supérieur (elle prend une fonction en paramètre) est `(+2)` est fonction appliquée partiellement (on ne lui donne qu'un argument et ça devient une fonction qui prend un argument), aussi appelée curry. Beaucoup de langages comme Python, Ruby et Lua ont piqué des concepts de ces langages pour la syntaxe, les fonctions, et d'autres choses comme les compréhensions de liste.
_________________
http://bit.ly/u5x6DZ Fangame et suite du célèbre Metroid Prime 3.
Corvées : header fofo, Homebreware, µPy, new µLib, modes d'emploi, MLS sur DeSmuME, rotation écran, tuto wiki, domination de la Galak-sy.


Dernière édition par Lolman le Lun 3 Sep 2012 - 10:56; édité 1 fois
Revenir en haut
Visiter le site web du posteur
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Ven 10 Aoû 2012 - 23:58    Sujet du message: Les fonctions Répondre en citant

La pub c'est mal...

Tu peux tenter de déterminer le "mode" de ta fonction suivant le type des paramètres, ou les paramètres eux-mêmes qui sont fournis.
Par exemple :
Code:
function operation(type, nb1, nb2)
  if type == "+" then return nb1 + b=nb2
  elseif type == "*" then return nb1 * nb2 end
end

Disons que c'est la version "choisis ton mode".
On peut avoir quelque chose de plus subtil :
Code:
-- Evidemment c'est totalement inutile, mais un exemple utile c'est pas drôle
function operation(nb1, nb2)
  if (nb1 >= 0 and nb1 < 100) and (nb2 >= 0 and nb2 < 100) then
    return nb1 * nb2
  else
    return nb1 + nb2
  end
end

Ou encore, par rapport au type :
Code:
function ajouter(obj1, obj2)
  if type(obj1) == "number" and type(obj2) == "number" then
    return obj1 + obj2
  else
    return obj1 .. obj2
 end

On peut aussi vérifier si un argument est donné. En effet, en Lua il n'est pas obligatoire de fournir tous les arguments à une fonction, comme ce serait le cas en C. Et si un argument en bout de liste n'est pas donné, sa valeur sera "nil", il suffit donc de vérifier si "arg == nil" pour créer d'autres "modes" de la fonction.


Là où en C on définirait plusieurs fois la fonction en différenciant les types des arguments (et éventuellement du retour de la fonction), en Lua on ne fait qu'une seule fonction dans laquelle on détermine des cas via de simples conditions sur les arguments.
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Sam 11 Aoû 2012 - 10:34    Sujet du message: Les fonctions Répondre en citant

bzh0 a écrit:
Merci.
Mais comment faire pour avoir une fonction avec plusieurs  options , du genre fonction.mode1, fonction.mode2...

J'ai vraiment dû écrire dans le vide x_x'

Dis nous tout simplement ce que tu veux faire ce sera plus simple, si la réponse de Reylak ne te suffis pas.

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Sam 11 Aoû 2012 - 12:58    Sujet du message: Les fonctions Répondre en citant

Je pensais à quelque chose du genre:
fonction=
{mode1=function ()
   return 1
 end,
 mode2=function ()
  return 2
 end
}
Et donc que l'on appelait fonction.mode1 ou fonction.mode2
Cela ne marchait pas parce que j'avais oublié la virgule...
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Sam 11 Aoû 2012 - 19:29    Sujet du message: Les fonctions Répondre en citant

Aaaaaaah ben ouais ça peut se faire aussi. A toi de voir ce qui est le plus efficace (à ne pas confondre avec "le plus simple" :p ) avec ce que je t'ai proposé. Par exemple s'il y a du code similaire dans les deux modes, ce n'est probablement pas la meilleure solution.
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Lun 13 Aoû 2012 - 09:20    Sujet du message: Les fonctions Répondre en citant

Le probleme résidait surtout dans les arguments, qui sont dans mon cas très differents pour les différents mode, et ce n'aurait pas été pratique pour moi de faire un fonction:function(a,b,c,d) pour le codage.
Merci quand mêm de vos réponses!
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
Lolman
Modérateur

Hors ligne

Inscrit le: 02 Aoû 2011
Messages: 811

MessagePosté le: Mar 14 Aoû 2012 - 20:43    Sujet du message: Les fonctions Répondre en citant

Dis-nous ce que tu veux faire, pas comment tu penses le faire, et nous te donnerons une solution élégante Wink. D'ailleurs, c'est plutôt `tableau = { mode1 = function() ... end, mode2 = function() ... end`. Bien sûr, dans un langage fonctionnel, qui respecte l'excellente théorie mathématique du lambda-calcul, ton tableau serait aussi une fonction, mais ici c'est un tableau qui contient fonctions Wink.
@Reylak : De la pub ? Je n'en vois pas la moindre. Le début et la fin du message sont des informations utiles concernant son problème et le milieu est culturel aussi bien que très attirant.
_________________
http://bit.ly/u5x6DZ Fangame et suite du célèbre Metroid Prime 3.
Corvées : header fofo, Homebreware, µPy, new µLib, modes d'emploi, MLS sur DeSmuME, rotation écran, tuto wiki, domination de la Galak-sy.


Revenir en haut
Visiter le site web du posteur
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Mar 14 Aoû 2012 - 21:47    Sujet du message: Les fonctions Répondre en citant

Citation:
aussi bien que très attirant.

Je crois qu'on a tous bien compris que Haskell ça roxxe du poney en latex.
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Lolman
Modérateur

Hors ligne

Inscrit le: 02 Aoû 2011
Messages: 811

MessagePosté le: Jeu 16 Aoû 2012 - 09:36    Sujet du message: Les fonctions Répondre en citant

L'as-tu essayé, ou même juste jeté un œil au tutoriel ?
_________________
http://bit.ly/u5x6DZ Fangame et suite du célèbre Metroid Prime 3.
Corvées : header fofo, Homebreware, µPy, new µLib, modes d'emploi, MLS sur DeSmuME, rotation écran, tuto wiki, domination de la Galak-sy.


Revenir en haut
Visiter le site web du posteur
thermo_nono
Modérateur

Hors ligne

Inscrit le: 31 Déc 2008
Messages: 2 415
Localisation: La Géhenne

MessagePosté le: Jeu 16 Aoû 2012 - 10:30    Sujet du message: Les fonctions Répondre en citant

Moi j'ai regardé un peu un tuto, je trouve que c'est un langage étrange avec une syntaxe peu orthodoxe... cela dit, c'est peut être bien pour farfouiller dans des tableaux et y faire du tri... 
Et bien entendu, contrairement à Lua, Haskell ne dispose pas de version qui tourne sur NDS !  Razz
_________________
“Qui reçoit une idée de moi reçoit de la connaissance sans diminuer la mienne, comme celui qui allume sa chandelle à la mienne reçoit la lumière sans me plonger dans l’obscurité.” - Thomas Jefferson


Revenir en haut
Visiter le site web du posteur MSN
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Jeu 16 Aoû 2012 - 11:04    Sujet du message: Les fonctions Répondre en citant

thermo_nono a écrit:
contrairement à Lua, Haskell ne dispose pas de version qui tourne sur NDS ! Razz

Onch !

Puis d'un autre coté, j'ai envie de dire qu'on s'en fous un peu d'Haskell ici. (Ça aurait peut être sa place dans le Hors-Sujet)

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Dernière édition par Fantasix le Ven 17 Aoû 2012 - 00:12; édité 1 fois
Revenir en haut
Visiter le site web du posteur
Thomas99


Hors ligne

Inscrit le: 12 Avr 2012
Messages: 141
Localisation: Le forum.

MessagePosté le: Jeu 16 Aoû 2012 - 11:41    Sujet du message: Les fonctions Répondre en citant

thermo_nono a écrit:
contrairement à Lua, Haskell ne dispose pas de version qui tourne sur NDS !  Razz

La tentation était trop forte de Googliser "haskell nds"...
Et je tombe sur ça et ça...
_________________
Publié : ctrµLua, Candran
A publier : TCPDebugger, FastShell
A finir : µPortal, LLUL, µStore, serveur wifis, microlua.js, d'autres trucs
Mon site \o/


Revenir en haut
Visiter le site web du posteur
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 10:26    Sujet du message: Les fonctions

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide Toutes les heures sont au format GMT + 1 Heure
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com