Je suis à la recherche d’une façon plus élégante de concaténer des chaînes en Ruby.
J’ai la ligne suivante :
Y a-t-il une façon plus agréable de faire cela ?
Et d’ailleurs, quelle est la différence entre et
?
Je suis à la recherche d’une façon plus élégante de concaténer des chaînes en Ruby.
J’ai la ligne suivante :
Y a-t-il une façon plus agréable de faire cela ?
Et d’ailleurs, quelle est la différence entre et
?
Vous pouvez le faire de plusieurs façons:
<<
mais ce n'est pas l' habitude façonAvec de la ficelle interpolation
source = "#{ROOT_DIR}/#{project}/App.config"
avec +
source = "#{ROOT_DIR}/" + project + "/App.config"
La seconde méthode semble être la plus efficace en terme de mémoire et de vitesse à partir de ce que j'ai vu (pas mesuré). Les méthodes 1 et 3 de jeter un NoMethodError quand ROOT_DIR est nul.
Lorsque vous traitez avec des chemins d'accès, vous pouvez utiliser File.join
pour éviter la pagaille avec séparateur de chemin.
À la fin, c'est une question de goût.
Je préfère utiliser le nom de Chemin:
require 'pathname' # pathname is in stdlib
Pathname(ROOT_DIR) + project + 'App.config'
à propos de <<
et +
de ruby docs:
+
: Retourne une nouvelle Chaîne de caractères contenant other_str concaténé à la str
<<
: Concatène l'objet donné à la str. Si l'objet est un Fixnum entre 0 et 255, il est converti à un personnage avant de concaténation.
donc, la différence est dans ce qui devient la première opérande (<<
apporte des modifications à la place, +
retourne la nouvelle chaîne de sorte qu'il est de la mémoire plus lourd) et ce sera si le premier opérande est Fixnum (<<
permettra d'ajouter, comme si c'était de caractère avec code égal à ce nombre, +
génère l'erreur)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.