def宏在case语句中

时间:2015-06-27 09:40:09

标签: scala macros

我想问一下可以调用def宏的位置以及何时扩展它们?我想我们不能在适合的任何地方放置适当的生成AST? 例如,我想要这个:

(2,1) match { 
    case StandaloneMacros.permutations(1,2) => true ; 
    case (_,_) => false 
}

在宏观扩张后成为这个

(2,1) match { 
    case (1,2) | (2,1) => true ; 
    case (_,_) => false 
}

我的宏排列会生成替代元组。但是当我运行第一个片段时,我得到了

macro method permutations is not a case class, nor does it have an unapply/unapplySeq member

我还尝试使用unapply宏方法定义 Permutations 对象,但又出现了另一个错误:

scala.reflect.internal.FatalError: unexpected tree: class scala.reflect.internal.Trees$Alternative

那么:有可能实现吗?

0 个答案:

没有答案