Ruby 语法错误,意外的 tLABEL

标签 ruby syntax syntax-error

编辑:

我创建了 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/

相关文章:

css - 外部 css 的 Firefox 3 语法错误

运算符重载的 C++ 错误

Ruby::如何使用 Mechanize 搜索隐藏元素

ruby - 需要子目录中的所有文件

swift - Swift 语法 ".bar"叫什么?

delphi - 寻找完整的 Delphi (object pascal) 语法

Ruby 方法链接中间值

ruby - 将 super 与 class_eval 一起使用

c++ - 使用指向数组数组的指针声明和初始化数组

MySQL语法错误,无法找出问题所在