编辑:
我已经创建了a package,现在在GNU Public License下在GitHub上发布。非常感谢你们在这个问题上的帮助!
使用这部分脚本:
line = { TransactionType: "Payment",
Account: #{xagate},
Destination: #{destinationAddress},
Amount: {
currency: "TST",
value: "#{destAmount}",
issuer: "rKYHqy2QWbf5WThp7vdJAxTR3WBHKDh9xv"
}我收到这个错误:
syntax error, unexpected tLABEL
Destination: #{destinationAddress},
^导致此语法错误的原因是什么?下面接受的答案解释了如何修复此错误。至于Ripple JSON,我发现Ripple服务器软件的err29是缺少Fee和Sequence字段的结果。如果你也遇到了这个问题,可以在这个帖子中找到答案:https://forum.ripple.com/viewtopic.php?f=2&t=15599
发布于 2015-08-29 04:45:16
根据我的经验,unexpected tLABEL意味着表达式或块没有正确结束。Ruby将您的代码读取为
line = { TransactionType: "Payment",
Account: Destination: # STOPS HERE from errorline是您正在创建的散列。散列遵循以下格式:{ key => value }和{ key: value }。看起来你遵循的是第二种格式。正如您在上面看到的,Ruby将您的代码读取为{ key: {key: } },其中缺少第二个键的值。
在字符串之外,#符号告诉Ruby“从这里到行尾的所有内容都是注释。”使用Ruby语法高亮工具将StackOverflow注释标记为灰色,您可以很容易地看到这一点。
但在字符串内部,#用于字符串插值,这似乎就是您要实现的目标。字符串插值包括将文本括起来的双引号,例如:"Hello, #{planet}",其中#{}是放置变量的位置。
下面是使用字符串插值编写代码的方法:
Account: "#{xagate}",
Destination: "#{destinationAddress}",如果您稍后查看代码,您实际上是在使用line[Amount][value] (即"#{destAmount}")执行此操作。
由于您的字符串只包含插值的对象,因此我建议使用以下方法。首先,您可以在对象上调用to_s,将其转换为字符串。如果对象是数组,则字符串将包含逗号和方括号。其次,您可以简单地执行Account: xagate。这要简单得多,因为您可以根据变量检查值,而不是检查包含变量的字符串。(少了一个处理步骤!)
最后,正如您在聊天中提到的,您是Ruby的新手。所有以大写字母开头的对象(如Account)都引用类,而大写形式的对象是常量,这是标准约定。这不是你出错的原因,尽管现在就开始修复它是一个很好的做法……以防止可能由此引发的问题。
发布于 2015-08-29 04:29:38
变化
Account: #{xagate},
Destination: #{destinationAddress},至
Account: "#{xagate}",
Destination: "#{destinationAddress}",双引号将字符串括起来,该字符串可能包含应插入的表达式。字符串中的这些表达式用#{...}标记
https://stackoverflow.com/questions/32279232
复制相似问题