x = "hello" " world".to_sym
puts x.class
Cela fonctionne et me permet de concaténer les deux chaînes dans un symbole, produisant la sortie:Quel est l'ordre des opérations avec cette concaténation?
Symbol
Mais si je change légèrement d'utiliser un + au lieu d'un espace séparant les chaînes de bonjour et monde , je reçois une erreur:
x = "hello" + " world".to_sym
puts x.class
cela produit l'erreur suivante - Je pense que c'est parce qu'il essaie de « jeter » le « monde » .to_sym rappellerons à une chaîne avant de concaténer sur la chaîne « bonjour » :
in `+': can't convert Symbol into String (TypeError)
Je me demande ce qui fait le premier exemple de travail? Est-ce que quelqu'un sait ce que l'ordre des opérations est ici? Je soupçonne que les deux chaînes sont traitées comme une seule, que l'espace entre elles est ignoré et qu'elles sont concaténées avant l'appel de la méthode to_sym. En fait, je m'attendais à ce qu'il ne fonctionne pas différemment du second exemple parce que je pensais que le to_sym serait appelé sur la chaîne "world" AVANT de tenter de joindre le contenu de "hello" et "world".