Fonction printant son propre nom
Reb-Kodeur22-Sep-2006/11:37:40+2:00
Je me souviens avoir demandé une fois sur codeur.org une manière d'obtenir la liste d'arguments d'une fonction, à l'intérieur même de la fonction..

Est-il possible de réécrire la fonction 'func, afin qu'elle écrive par elle-même son propre nom, afin d'effectuer de meilleurs fichier trace.

ex:

ajouter: func [][ foo]

ajouter
==> "in 'ajouter'"

supprimer: func [][ foo]

supprimer
==> "in 'supprimer'"
Reb-Kodeur22-Sep-2006/11:38:35+2:00
l'url du thread permettant d'obtenir les arguments passés :

http://www.codeur.org/forum/message.php?ID_Sujet=1795
DideC22-Sep-2006/14:00:53+2:00
make-func: func [
	"Defines a user function with given spec and body."
    [catch]
    'name [word!]
    spec [block!] {Help string (opt) followed by arg words (and opt type and string)}
    body [block!] "The body block of the function"
][
	insert head body compose [system/words/print (to-lit-word :name)]
    set :name throw-on-error [make function! spec body]
]

make-func additionner [v1 v2] [v1 + v2]

additionner 1 2
Coccinelle23-Sep-2006/23:16:53+2:00
Pour connaitre la liste des arguments d'une fonction, tu peux utiliser la fonction bind? :

x: func [
a b c /local
][
local: bind? 'local
probe first local
]
>> x 1 2 3
[a b c /local]
== [a b c /local]

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2