0

case authorDao: AuthorDao => authorDaoDao 自体のサブクラスを返すようにこれを記述しようとしています。

この準引用を使用すると:

val daoType = TypeName(daoName)
val caseTerm = TermName(daoName.toLowerCase)

cases.append(cq"$caseTerm: $daoType=> $caseTerm")

これを生成します

case (authordao @ ((_): AuthorDao)) => authordao

そして、私がこれを行うと

cases.append(cq"${q"$caseTerm: $daoType"} => $caseTerm")

それはこれを行います

case ((authordao): AuthorDao) => authordao

どちらもコンパイルエラーを生成します

4

1 に答える 1

1

いくつかのグーグルの後、私はここに答えを見つけました:

Scala の複数型パターン マッチング

基本的

case authordao: AuthorDao => authordaoこれに等しい

case authordao @ AuthorDao(_) => authordao

したがって、最終的なコードはこれです

      val daoTerm = TermName(daoName)
      val caseType = TypeName(daoName.toLowerCase())
      val caseExpr = TermName(daoName.toLowerCase)

      cases.append(cq"$caseType @ $daoTerm(_) => $caseExpr")
于 2015-08-23T13:02:44.930 に答える