<blockquote>Concernant la remarque sur join, je suis bien d'accord que ça ne s'applique pas qu'aux tableaux ou aux listes, ça s'applique à tout ce qui est énumérable.</blockquote>
Non. cela s'applique sur les énumérables qui retournent des chaînes et uniquement ceux la.
<blockquote>Je ne vois toujours pas en quoi on peut penser que c'est une méthode de String, mais admettons, c'est peut-être une autre manière de voir qui est valide.</blockquote>Si ça s'applique à l'objet basestring c'est que dans la liste il ne peut y avoir que des basestring.
Après on peut se poser la question de pourquoi on à pas une méthode générale qui prendrai autre chose que des chaînes. Mais cette méthode générique, dans le cas des chaînes devrait répétitivement faire des resultat+=unechaine, qui en python (tout comme strcat en C) est lent comme la pluie, et qui rendrait au final la méthode pas très intéressante.
Si la méthode join est intéressante, c'est qu'elle est optimisée pour traiter des chaînes et qu'elle doit sûrement accéder à la représentation interne des chaînes de la liste. Mettre cette méthode sur un objet liste ou un type énumerable, c'est autoriser qu'une méthode d'un objet aille fouiller dans la représentation interne de l'autre et c'est Mal.
[^] # Re: Célèbre ?
Posté par Batchyx . En réponse à la dépêche Sortie de Ruby on Rails 2.0. Évalué à 1.
Non. cela s'applique sur les énumérables qui retournent des chaînes et uniquement ceux la.
<blockquote>Je ne vois toujours pas en quoi on peut penser que c'est une méthode de String, mais admettons, c'est peut-être une autre manière de voir qui est valide.</blockquote>Si ça s'applique à l'objet basestring c'est que dans la liste il ne peut y avoir que des basestring.
Après on peut se poser la question de pourquoi on à pas une méthode générale qui prendrai autre chose que des chaînes. Mais cette méthode générique, dans le cas des chaînes devrait répétitivement faire des resultat+=unechaine, qui en python (tout comme strcat en C) est lent comme la pluie, et qui rendrait au final la méthode pas très intéressante.
Si la méthode join est intéressante, c'est qu'elle est optimisée pour traiter des chaînes et qu'elle doit sûrement accéder à la représentation interne des chaînes de la liste. Mettre cette méthode sur un objet liste ou un type énumerable, c'est autoriser qu'une méthode d'un objet aille fouiller dans la représentation interne de l'autre et c'est Mal.