编辑:
我创建了a package,现在在GNU公共许可证下在GitHub上发布。非常感谢你们对这个问题的帮助!
使用这部分脚本:
line = { TransactionType: "Payment",
Account: #{xagate},
Destination: #{destinationAddress},
Amount: {
currency: "TST",
value: "#{destAmount}",
issuer: "rKYHqy2QWbf5WThp7vdJAxTR3WBHKDh9xv"
}
我收到此错误:
syntax error, unexpected tLABEL
Destination: #{destinationAddress},
^
导致此语法错误的原因是什么?下面接受的答案解释了如何解决此错误。至于Ripple JSON,我发现波纹服务器软件的err29是由于缺少Fee和Sequence字段而导致的。如果您还遇到此问题,则会在此主题中调查答案:https://forum.ripple.com/viewtopic.php?f=2&t=15599
答案 0 :(得分:8)
unexpected tLABEL
表示表达式或块未正确结束。 Ruby正在以
line = { TransactionType: "Payment",
Account: Destination: # STOPS HERE from error
line
是您正在制作的哈希。哈希遵循以下格式:{ key => value }
和{ key: value }
。看起来你正在遵循第二种格式。如上所述,Ruby正在将您的代码读作{ key: {key: } }
,其中缺少第二个键的值。
在字符串之外,#
符号告诉Ruby"从这里到行尾的所有内容都是注释。"您可以使用StackOverflow语法高亮显示器将Ruby注释标记为灰色来轻松查看。
但是在字符串中,#
用于字符串插值,这似乎是你想要实现的。字符串插值包括文本周围的 double 引号,如下所示:"Hello, #{planet}"
,其中#{}
是放置变量的位置。
这是使用字符串插值编写代码的方法:
Account: "#{xagate}",
Destination: "#{destinationAddress}",
如果您稍后在代码中查看,那么您实际上是使用line[Amount][value]
("#{destAmount}"
)
由于您的字符串仅包含插值的对象,我建议使用以下内容。首先,您可以在对象上调用to_s
,将其转换为字符串。如果对象是数组,则该字符串将包含逗号和括号。其次,你可以做Account: xagate
。这是很多更简单,因为您可以检查变量的值,而不是包含变量的字符串。 (少处理一步!)
最后,正如你在聊天中提到的,你是Ruby的新手。标准惯例是所有以大写字母开头的对象(如Account
)引用类,而大写字母中的对象是常量。这不是你的错误的原因,虽然现在开始修复它是一个好习惯...以防止可能源于此的问题。
答案 1 :(得分:4)
变化
Account: #{xagate},
Destination: #{destinationAddress},
到
Account: "#{xagate}",
Destination: "#{destinationAddress}",
双引号括起可能包含应插入的表达式的字符串。这些表达式 in 字符串中标有#{...}