question java ...
j'ai une question compliquée a expliquer, si vous avez le temps appelez moi, la voici: certaines methodes "get" renvoit l'objet lui meme et toute transformation faite plus tard, affecte l objet initial meme s'il est stoqué sous un autre nom... d'autres methodes non... comment on sait qui fait quoi? exemple: si je fais: Equation nr = pop.getNaturalDeathRate(); nr.setContent("return 0.2"); est ce que ca modifie l'equation Natural death rate ou seulement nr ? autrement dit, est ce que c'est different de : pop.getNaturalDeathRate().setContent("return 0.2"); ? par exemple pour les matrices c'est marqué: getSubMatrix() *Returns:*new matrix Je pose des questions metaphysiques? MERCI!
C'est vrai que des fois c'est perturbant... Si je ne dis pas de bêtise, avec Eric pour créer de nouvelles matrices on faisait un clone() des anciennes et on modifiait le clone() pour être certains de ne pas faire de bêtises. Le 02/12/2013 16:19, Sigrid Lehuta a écrit :
j'ai une question compliquée a expliquer, si vous avez le temps appelez moi, la voici:
certaines methodes "get" renvoit l'objet lui meme et toute transformation faite plus tard, affecte l objet initial meme s'il est stoqué sous un autre nom... d'autres methodes non... comment on sait qui fait quoi?
exemple:
si je fais: Equation nr = pop.getNaturalDeathRate(); nr.setContent("return 0.2");
est ce que ca modifie l'equation Natural death rate ou seulement nr ? autrement dit, est ce que c'est different de : pop.getNaturalDeathRate().setContent("return 0.2"); ?
par exemple pour les matrices c'est marqué:
getSubMatrix() *Returns:* new matrix
Je pose des questions metaphysiques? MERCI!
_______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-devel
Le 02/12/2013 16:19, Sigrid Lehuta a écrit :
j'ai une question compliquée a expliquer, si vous avez le temps appelez moi, la voici:
certaines methodes "get" renvoit l'objet lui meme et toute transformation faite plus tard, affecte l objet initial meme s'il est stoqué sous un autre nom... d'autres methodes non... comment on sait qui fait quoi?
exemple:
si je fais: Equation nr = pop.getNaturalDeathRate(); nr.setContent("return 0.2");
est ce que ca modifie l'equation Natural death rate ou seulement nr ? nr est une référence sur l’équation de la population, appeler une méthode sur une variable applique le changement sur l'objet vers lequel pointe la variable en mémoire. autrement dit, est ce que c'est different de : pop.getNaturalDeathRate().setContent("return 0.2"); ? Non, c'est le même qui fait la même chose.
par exemple pour les matrices c'est marqué:
getSubMatrix()
Ca dépend de ce que fait la méthode. Généralement, une methode qui commence par "get" et qui ne prend aucun parametre renvoie une valeur ou une référence sans la modifier (comme pop.getNaturalDeathRate() renvoie l'equation actuelle). Pour getSubMatrix(), c'est différent : http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/org/nuiton/math/matrix/MatrixND.html#getSubMatrix(int[]...) <http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/org/nuiton/math/matrix/MatrixND.html#getSubMatrix%28int[]...%29> La methode a des paramètres et la documentation dit (enfin laisse entendre :-) ) qu'elle retourne une sous matrice. Donc dans ce cas une nouvelle matrice est calculée et retournée. Donc: MatrixND m1 = pop.getNaturalDeathRateMatrix(); MatrixND m2 = m1.getSubMatrix(popGroup1); m2.setValue(0, 0, 42); m2 sera modifiée, mais pas m1. -- Éric Chatellier - Code Lutin Tel: 02.40.50.29.28 - http://www.codelutin.com
Compris merci! Le 2 décembre 2013 16:54, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 02/12/2013 16:19, Sigrid Lehuta a écrit :
j'ai une question compliquée a expliquer, si vous avez le temps appelez moi, la voici:
certaines methodes "get" renvoit l'objet lui meme et toute transformation faite plus tard, affecte l objet initial meme s'il est stoqué sous un autre nom... d'autres methodes non... comment on sait qui fait quoi?
exemple:
si je fais: Equation nr = pop.getNaturalDeathRate(); nr.setContent("return 0.2");
est ce que ca modifie l'equation Natural death rate ou seulement nr ? nr est une référence sur l’équation de la population, appeler une méthode sur une variable applique le changement sur l'objet vers lequel pointe la variable en mémoire. autrement dit, est ce que c'est different de : pop.getNaturalDeathRate().setContent("return 0.2"); ? Non, c'est le même qui fait la même chose.
par exemple pour les matrices c'est marqué:
getSubMatrix()
Ca dépend de ce que fait la méthode. Généralement, une methode qui commence par "get" et qui ne prend aucun parametre renvoie une valeur ou une référence sans la modifier (comme pop.getNaturalDeathRate() renvoie l'equation actuelle).
Pour getSubMatrix(), c'est différent :
http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/org/nuiton/math/matrix/MatrixND.html#getSubMatrix(int[].. .) < http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/org/nuiton/math/matrix/MatrixND.html#getSubMatrix%28int[]...%29
La methode a des paramètres et la documentation dit (enfin laisse entendre :-) ) qu'elle retourne une sous matrice. Donc dans ce cas une nouvelle matrice est calculée et retournée.
Donc: MatrixND m1 = pop.getNaturalDeathRateMatrix(); MatrixND m2 = m1.getSubMatrix(popGroup1); m2.setValue(0, 0, 42);
m2 sera modifiée, mais pas m1.
-- Éric Chatellier - Code Lutin Tel: 02.40.50.29.28 - http://www.codelutin.com
_______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-devel
On Mon, 02 Dec 2013 16:54:46 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
Pour getSubMatrix(), c'est différent : http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/org/nuiton/math/matrix/MatrixND.html#getSubMatrix(int[]...) <http://maven-site.nuiton.org/nuiton-matrix/nuiton-matrix/apidocs/org/nuiton/math/matrix/MatrixND.html#getSubMatrix%28int[]...%29> La methode a des paramètres et la documentation dit (enfin laisse entendre :-) ) qu'elle retourne une sous matrice. Donc dans ce cas une nouvelle matrice est calculée et retournée.
Donc: MatrixND m1 = pop.getNaturalDeathRateMatrix(); MatrixND m2 = m1.getSubMatrix(popGroup1); m2.setValue(0, 0, 42);
m2 sera modifiée, mais pas m1.
Je dirais que non, meme si la document dit 'return new matrix'. Car elle retourne un nouvel objet SubMatrix qui n'est en fait qu'une vu sur un sous ensemble de la matrice initiale. Et donc si on modifie la sous matrice celle-ci change en fait la valeur de la matrice initiale. ps: je vais changer la doc pour etre plus clair sur le @return -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com
participants (4)
-
Benjamin POUSSIN -
Eric Chatellier -
Loic GASCHE -
Sigrid Lehuta