首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala:使用PartialFunction reify调用scala宏时“缺少参数类型”

Scala:使用PartialFunction reify调用scala宏时“缺少参数类型”
EN

Stack Overflow用户
提问于 2015-02-25 11:04:04
回答 1查看 125关注 0票数 2

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

代码语言:javascript
复制
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]
        }
      }
}

这就是我如何调用宏实现的方式:

代码语言:javascript
复制
object Macros {
def missingParamType(a: Int):PartialFunction[Int,String] = macro Implementations.missingParamType_impl
}

我也尝试过这样做:

代码语言:javascript
复制
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
    }
  }

还是我从根本上误解了如何使工作具体化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 08:15:04

不幸的是,这似乎是一个已知的问题:https://issues.scala-lang.org/browse/SI-6619

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28717344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档