0
我正在使用來自Spotify的Scio庫的宏註釋。我想定義String
類型的變量和註釋是這樣的:Scala宏:分配給變量的字符串文字不匹配
val schemaString = """schema here"""
@BigQueryType.fromSchema(outputString) class BigQuery
然而,這並不編譯,如果我直接註釋String
,它的工作原理:
@BigQueryType.fromSchema("""schema here""") class BigQuery
的代碼展望,這種匹配是做here,基本代碼如下:
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)
}
的問題是,爲什麼這個不匹配變量,但字符串?如果有什麼方法可以使第一個例子工作?