[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ruby-fr
Subject:    [ruby-fr:0082] Re: passage d arguments
From:       Mathieu Bouchard <matju () sympatico ! ca>
Date:       2001-08-23 10:37:27
[Download RAW message or body]


On Thu, 23 Aug 2001, Picavet Vincent wrote:
> Mais comment faire si on veut que le variable passee en argument soit
> modifiee par la fonction (comme on ferait un apssage par pointeur en C)
> ?

En Ruby, comme en SmallTalk, Lisp, et Java, les paramètres sont des
valeurs, et non des variables; donc, un appel de fonction fait uniquement
des affectations d'un contexte local à un autre; aucune variable n'est
partagée (sauf lorsque ces variables sont déjà partagées, par un autre
moyen)

Donc, si vous voulez un paramètre de sortie, utilisez la valeur de retour
de la méthode; si vous en voulez plusieurs, retournez un tableau
(e.g. return a,b,c; ça va bien avec l'affectation multiple).

Un autre moyen est de passer une structure mutable... pour des situations
à élément unique, on suggère généralement un truc du genre:

	class Var; attr_accessor :valeur; end

ou encore:

	class Var
		def []=(valeur); @valeur=valeur; end
		def [](); @valeur; end
	end

ce que j'ai déjà appelé "tableau à zéro dimension" (et donc,
mathématiquement, à toujours exactement un seul élément)

En général, les valeurs de retour sont plus faciles à utiliser que
l'introduction de Var.

matju

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic