1

準引用符を使用してパッケージ AST を生成しようとしています。次のようなパッケージパスをリストする文字列変数があります

val pkg = "database.dao"

quasi quote を使用すると、代わりにq"package $pkga が必要であることがわかりRefTreeます。しばらく検索してみましたが、文字列を変換する答えが見つかりませんRefTree

どうすればいいですか?

4

1 に答える 1

1

このスライドシェアの pg 7 で答えを見つけました

Select()パッケージ変数を動的に挿入したい場合は、複数の を使用して独自の AST を生成する必要があることがわかりました。

  def selectIdentity(directory: String): Select = {
    val dirs = directory.split('.').reverse
    val lastIndex = dirs.length - 1

    def apply(i: Int = 0) : Select = if (i < lastIndex - 1) {
      Select(apply(i + 1), TermName(dirs(i)))
    } else {
      Select(Ident(TermName(dirs(lastIndex))), TermName(dirs(lastIndex - 1)))
    }

    apply()
  }
于 2015-08-24T08:11:44.733 に答える