Ruby syntax Error, unexpected tLABEL
EDIT:
J'ai créé un paquet qui est maintenant disponible sur GitHub sous Licence Publique GNU. Merci beaucoup à tous pour votre aide sur cette question!
Avec cette portion de script:
line = { TransactionType: "Payment",
Account: #{xagate},
Destination: #{destinationAddress},
Amount: {
currency: "TST",
value: "#{destAmount}",
issuer: "rKYHqy2QWbf5WThp7vdJAxTR3WBHKDh9xv"
}
Je reçois cette erreur:
syntax error, unexpected tLABEL
Destination: #{destinationAddress},
^
Quelle est la cause de cette erreur de syntaxe? La accepté de répondre ci-dessous explique comment corriger cette erreur. Comme pour l'Ondulation JSON, j'ai découvert que la err29 pour le murmurait logiciel de serveur est le résultat d'un manque de Frais et de champ de Séquence. Si vous êtes confrontés à ce problème, la réponse est étudiée dans ce fil: https://forum.ripple.com/viewtopic.php?f=2&t=15599
- J'ai soumis une mise à jour pour votre question. Les détails supplémentaires que vous avez ajouté sur
undefined []
doivent être soumis à une nouvelle question. Cependant, je vous recommande de fixer celui-ci avant de passer à une autre erreur. - Presque chaque erreur de syntaxe question qui obtient publié dans ruby peut être résolu simplement en regardant la coloration de la syntaxe de StackOverflow de la syntaxe surligneur. Dans ce cas, par exemple, dans la ligne incriminée, la
#
est clairement mis en évidence comme un commentaire (gris clair), pas une chaîne littérale (marron). La chose triste, c'est que la syntaxe surligneur est en fait assez stupide, mais est encore assez intelligent pour attraper pratiquement toutes les erreurs de syntaxe posté sur DONC. Ce qui me fait me demander: n'est-ce pas se produire à quelqu'un lors de la publication d'un syntaxe question de regarder la syntaxe en soulignant? - Merci d'éditer tous les détails que pour ne pas se rapportent à la tLABEL question!
- Fait. Merci encore pour l'aide! Dans les 24 heures de l'apprentissage de Ruby, j'ai été en mesure d'obtenir un message d'erreur que j'attendais pourrait se produire avec le reste du script.
- J'ai créé un paquet qui est maintenant disponible sur GitHub sous Licence Publique GNU. Merci beaucoup à tous pour votre aide sur cette question!
Vous devez vous connecter pour publier un commentaire.
unexpected tLABEL
, dans mon expérience, signifie qu'une expression ou un bloc n'est pas terminé correctement. Ruby est la lecture de votre codeline
est un hachage que vous faites. Hachages suivez les formats:{ key => value }
et{ key: value }
. On dirait que vous êtes la suite de la deuxième format. Comme vous le voyez ci-dessus, le Rubis est la lecture de votre code{ key: {key: } }
où la valeur de la deuxième clé est manquante.À l'extérieur d'une chaîne, le
#
symbole indique Ruby "tout d'ici à la fin de la ligne est un commentaire." Vous pouvez facilement voir cela avec le StackOverflow de la coloration syntaxique de marquage Ruby commentaires de gris.Mais à l'intérieur d'une chaîne,
#
est utilisé pour la chaîne d'interpolation, ce qui semble être ce que vous essayez d'atteindre. Chaîne d'interpolation comprend double guillemets enroulé autour du texte, comme suit:"Hello, #{planet}"
, où#{}
est l'endroit où vous placez la variable.C'est la façon dont vous écrivez votre code, à l'aide de la chaîne d'interpolation:
Si vous regardez plus loin dans votre code, vous êtes en train de faire cela avec
line[Amount][value]
(qui est"#{destAmount}"
)Depuis votre chaîne seulement contient l'objet interpolé, je suggère ce qui suit. Tout d'abord, vous pouvez appeler
to_s
sur l'objet, en la convertissant en une chaîne de caractères. Si l'objet était un tableau, la chaîne contiendra les virgules et les parenthèses. Deuxièmement, vous pouvez simplement faireAccount: xagate
. C'est beaucoup plus simple, comme vous pouvez vérifier la valeur par rapport à la variable, au lieu d'une chaîne de caractères contenant la variable. (Une étape de moins à traiter!)Enfin, comme vous l'avez mentionné dans le chat, vous êtes nouveau à Ruby. C'est le standard de la convention que tous les objets commençant par une lettre majuscule (comme
Account
) reportez-vous à classes, et des objets dans les calottes sont constantes. Ce n'est pas la cause de votre erreur, même si il est de bonne pratique pour commencer à corriger cela maintenant... afin De prévenir les problèmes éventuellement issue de celle.<main>': undefined method
[]' for nil:NilClass (NoMethodError) Compte doit être en majuscule pour le paiement JSON à la fonction, pourrait ruby pense que c'est une variable de classe? C'est provoqués sur la ligne 14, immédiatement après secret_xagate=ondulation["secret"]["xagate"], donc, est-ce un problème avec l'utilisation de YAML/ondulation.yml fichier de config?changement
à
Guillemets joindre chaînes de caractères qui peut contenir des expressions qui doivent être interpolées. Ces expressions à l'intérieur de une chaîne sont marqués avec
#{...}
<main>': undefined method
[]' for nil:NilClass (NoMethodError)