Scala:';缺少参数类型';使用PartialFunction具体化调用scala宏时

Scala:';缺少参数类型';使用PartialFunction具体化调用scala宏时,scala,macros,partialfunction,Scala,Macros,Partialfunction,编译器正在向我抛出一个“缺少参数类型”。在解决了这个问题之后,我意识到当链接部分函数时,需要明确类型,否则编译器将抛出所提到的错误。现在,你们知道在宏的具体化中链接部分函数时有什么问题吗?我想我对部分函数类型再清楚不过了: object Implementations{ def missingParamType_impl(c: whitebox.Context)(a: c.Expr[Int]):c.Expr[PartialFunction[Int,String]] = {

编译器正在向我抛出一个“缺少参数类型”。在解决了这个问题之后,我意识到当链接部分函数时,需要明确类型,否则编译器将抛出所提到的错误。现在,你们知道在宏的具体化中链接部分函数时有什么问题吗?我想我对部分函数类型再清楚不过了:

object Implementations{
      def missingParamType_impl(c: whitebox.Context)(a: c.Expr[Int]):c.Expr[PartialFunction[Int,String]] = {
        import c.universe._

        reify {
          val spliced = a.splice
          val spliced2 = a.splice * 2
          ((PartialFunction.apply[Int,String]{
            case `spliced` ⇒ a.splice.toString
          } : PartialFunction[Int,String]).orElse[Int,String]{
            case `spliced2` ⇒ a.splice.toString
          } : PartialFunction[Int,String]) : PartialFunction[Int,String]
        }
      }
}
以下是我如何称呼宏实现的:

object Macros {
def missingParamType(a: Int):PartialFunction[Int,String] = macro Implementations.missingParamType_impl
}
我也试过:

def missingParamType_impl(c: whitebox.Context)(a: c.Expr[Int]):c.Expr[PartialFunction[Int,String]] = {
    import c.universe._

    reify {
      val spliced = a.splice
      val spliced2 = a.splice * 2
      val pf1: PartialFunction[Int, String] = {
        case `spliced` ⇒ a.splice.toString
      }
      val pf2: PartialFunction[Int, String] = {
        case `spliced2` ⇒ a.splice.toString
      }
      val PF:PartialFunction[Int, String] = pf1.orElse(pf2)
      PF
    }
  }

或者我根本上误解了具体化的工作原理?

不幸的是,这看起来像是一个已知的问题:。

这对你来说有多大的阻碍作用?不是真的。我想一张地图就行了