Ruby 语法错误,意外的 tLABEL
Ruby Syntax Error, unexpected tLABEL
编辑:
我创建了 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
改变
Account: #{xagate},
Destination: #{destinationAddress},
至
Account: "#{xagate}",
Destination: "#{destinationAddress}",
双引号括起可能包含应插入的表达式的字符串。这些表达式 inside 一个字符串被标记为 #{...}
unexpected tLABEL
,以我的经验,意味着表达式或块没有正确结束。 Ruby 正在阅读您的代码
line = { TransactionType: "Payment",
Account: Destination: # STOPS HERE from error
line
是您正在制作的散列。哈希遵循以下格式:{ key => value }
和 { key: value }
。看起来您正在遵循第二种格式。正如您在上面看到的,Ruby 正在将您的代码读取为 { key: {key: } }
,其中缺少第二个键的值。
在字符串之外,#
符号告诉 Ruby "everything from here to end-of-line is a comment." 您可以使用 Whosebug 语法高亮器将 Ruby 注释标记为灰色轻松看到这一点。
但是在字符串内部,#
用于字符串插值,这似乎是您想要实现的目标。字符串插值包括 double 引号环绕文本,如下所示:"Hello, #{planet}"
,其中 #{}
是您放置变量的位置。
这是使用字符串插值编写代码的方式:
Account: "#{xagate}",
Destination: "#{destinationAddress}",
如果您稍后查看代码,您实际上是在使用 line[Amount][value]
(即 "#{destAmount}"
)
由于您的字符串 仅 包含内插对象,我建议改为以下内容。首先,您可以在对象上调用 to_s
,将其转换为字符串。如果对象是数组,则字符串将包含逗号和方括号。其次,你可以简单地做 Account: xagate
。这 多 简单,因为您可以根据变量检查值,而不是检查包含变量的字符串。 (少了一个处理步骤!)
最后,正如您在聊天中提到的,您是 Ruby 的新手。标准约定所有以大写字母开头的对象(如 Account
)指的是 类,大写的对象是 常量。这不是您出错的原因,尽管现在开始修复此问题是一种很好的做法...以防止可能由此产生的问题。
编辑:
我创建了 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
改变
Account: #{xagate},
Destination: #{destinationAddress},
至
Account: "#{xagate}",
Destination: "#{destinationAddress}",
双引号括起可能包含应插入的表达式的字符串。这些表达式 inside 一个字符串被标记为 #{...}
unexpected tLABEL
,以我的经验,意味着表达式或块没有正确结束。 Ruby 正在阅读您的代码
line = { TransactionType: "Payment",
Account: Destination: # STOPS HERE from error
line
是您正在制作的散列。哈希遵循以下格式:{ key => value }
和 { key: value }
。看起来您正在遵循第二种格式。正如您在上面看到的,Ruby 正在将您的代码读取为 { key: {key: } }
,其中缺少第二个键的值。
在字符串之外,#
符号告诉 Ruby "everything from here to end-of-line is a comment." 您可以使用 Whosebug 语法高亮器将 Ruby 注释标记为灰色轻松看到这一点。
但是在字符串内部,#
用于字符串插值,这似乎是您想要实现的目标。字符串插值包括 double 引号环绕文本,如下所示:"Hello, #{planet}"
,其中 #{}
是您放置变量的位置。
这是使用字符串插值编写代码的方式:
Account: "#{xagate}",
Destination: "#{destinationAddress}",
如果您稍后查看代码,您实际上是在使用 line[Amount][value]
(即 "#{destAmount}"
)
由于您的字符串 仅 包含内插对象,我建议改为以下内容。首先,您可以在对象上调用 to_s
,将其转换为字符串。如果对象是数组,则字符串将包含逗号和方括号。其次,你可以简单地做 Account: xagate
。这 多 简单,因为您可以根据变量检查值,而不是检查包含变量的字符串。 (少了一个处理步骤!)
最后,正如您在聊天中提到的,您是 Ruby 的新手。标准约定所有以大写字母开头的对象(如 Account
)指的是 类,大写的对象是 常量。这不是您出错的原因,尽管现在开始修复此问题是一种很好的做法...以防止可能由此产生的问题。