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