Soit c'est une question étrange, ou vous ne l'avez pas faite correctement ... Votre exemple de code utilise y
, donc il y a accès. Peut-être que vous essayez d'obtenir juste la valeur de y
:
(define (erkan x) (local [(define y 10)] y))
Ou peut-être que vous voulez créer une sorte d'une « chose d'objet » - cela est possible, mais implique un code plus avancé. Voici un exemple rapide juste pour vous montrer comment c'est fait, (mais si vous passez par HtDP, vous feriez mieux de laisser cela pour plus tard).
(define (erkan x)
(local [(define y 10)
(define (handler message)
(cond
[(eq? message 'get-x) x]
[(eq? message 'get-y) y]
[(eq? message 'compute) (* x y)]
[else (error "bad message")]))]
handler))
(define some-erkan (erkan 3))
(some-erkan 'get-x)
(some-erkan 'get-y)
(some-erkan 'compute)
(Notez BTW que ce n'est pas bon schéma, mais les dialectes étudiants d'enseignement utilisés dans HTDP.)
Je ne comprends pas votre question. Vous obtenez la valeur de 'y' - c'est ainsi que' x' est multiplié par 10. Voulez-vous dire que vous voulez accéder 'y' en dehors de la fonction? – Chuck
oui, exactement. Je veux utiliser y en dehors de la fonction- edit: got the answer. J'ai raté le concept, c'est "local" après tout. : P – erkangur