我在一个项目中采用Sorbet,我不明白我应该如何输入以下常量:
RETRIEVE_FILE_URL_QUERY = <<~QUERY.freeze
query($input: ID!) {
node(id: $input) {
... on BulkOperation {
url
partialDataUrl
}
}
}
QUERY
最快的方法应该是
RETRIEVE_FILE_URL_QUERY = T.let(<<~QUERY.freeze
query($input: ID!) {
node(id: $input) {
... on BulkOperation {
url
partialDataUrl
}
}
}
QUERY, String)
这也是我从vscode
得到的快速修复
但是这会引发错误
escape sequence meets end of file (2001)
如预期的那样,因为无法找到heredoc名称。
所以我试了
RETRIEVE_FILE_URL_QUERY = T.let(<<~QUERY.freeze
query($input: ID!) {
node(id: $input) {
... on BulkOperation {
url
partialDataUrl
}
}
}
QUERY
, String)
但是这引发了另一个错误:
T.untyped
unexpected token "," (2001)
看到这里,我不知道该怎么处理。
我知道我可以使用连接操作符(+
),但我不想分割这个字符串。
我还不熟悉ruby,所以我想问你是否有办法处理这个问题。
你的"最快";Way违反了语法。终止令牌必须单独在一行上。
当你这样做的时候:
QUERY, String)
您输入的不是终止符令牌QUERY
,所以假定字符串继续运行。
请记住,Ruby有多个引号系统,并且在很大程度上与多行无关,例如:
RETRIEVE_FILE_URL_QUERY = "
query($input: ID!) {
node(id: $input) {
... on BulkOperation {
url
partialDataUrl
}
}
}
".freeze
你也可以使用# frozen_string_literal: true
为你自动冻结。