[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Francois Rouaix <rouaix@c...> |
| Subject: | Re: Utilisation de |
Cher usager, > Je souhaite utiliser une fonction retournant une valeur avec l'option Command > dans un menu; > par exemple : > menu__add_command m [Label "Essai"; Command (let t = f(n))]; > > Il s'avere que cette instruction ne fonctionne pas car, l'option Command > accepte que les fonctions de type unit -> unit; De toutes facons elle est syntaxiquement incorrecte. Les callbacks (Command ou autres) ne retournent jamais de valeur, pour la simple raison que leur appelant est la boucle mainLoop de Tk. Ca n'a donc pas de sens de renvoyer une valeur, sauf si la specification du callback demande une valeur de retour (ce qui n'est jamais le cas pour la partie standard de Tk). D'ou le -> unit pour tous les types de callbacks. > Est-il possible de resoudre ce probleme sans utiliser des variables globales > mutables ? Les callback sont par essence des fonctions qui produisent des effets de bord. On utilise effectivement assez souvent des references ou des valeurs mutables dans ce type de situation. La reference n'a pas forcement besoin d'etre definie globalement bien sur, il suffit qu'elle ait la bonne portee. ---- Dear user, [The question was about the inability to return values from callbacks] Anyway, the example above is syntactically incorrect. Callbacks (Command or others) never return values, for the simple reason that their caller is the Tk mainLoop. Returning a value has no meaning, except if the callback specification required a return value, which is never the case in the standard Tk. Thus the -> unit for any callback type. --f