我正在使用来自 Spotify 的 Scio 库的宏注释。我想定义一个String
类型的变量并像这样注释:
val schemaString = """schema here"""
@BigQueryType.fromSchema(outputString) class BigQuery
这不会编译,但是,如果我String
直接注释,它可以工作:
@BigQueryType.fromSchema("""schema here""") class BigQuery
看代码,这个匹配到这里就完成了,本质上代码如下:
def str(tree: c.Tree) = tree match {
// "string literal"
case Literal(Constant(s: String)) => s
// "string literal".stripMargin
case Select(Literal(Constant(s: String)), TermName("stripMargin")) => s.stripMargin
case _ => c.abort(c.enclosingPosition, errorMessage)
}
问题是为什么这与变量不匹配,但字符串匹配?如果有任何方法可以使第一个示例工作?