Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Scala宏隐式使用Predef?_Scala_Macros_Implicit_Scala 2.10 - Fatal编程技术网

如何从Scala宏隐式使用Predef?

如何从Scala宏隐式使用Predef?,scala,macros,implicit,scala-2.10,Scala,Macros,Implicit,Scala 2.10,有一个具有此签名的方法在场景后面创建隐式参数: class A { def test[T: ClassTag](t: T) = println(t) } val a = new A a.test(123456) 因此,应该为方法test的调用提供隐式参数。在REPL中执行具体化时,调用树如下所示: Apply( Apply( Select( Select( newTermName("a"),

有一个具有此签名的方法在场景后面创建隐式参数:

class A {
    def test[T: ClassTag](t: T) = println(t)
}
val a = new A
a.test(123456)
因此,应该为方法
test
的调用提供隐式参数。在REPL中执行具体化时,调用树如下所示:

Apply(
    Apply(
        Select(
            Select(
                newTermName("a"), 
                newTermName("test")
            ), 
        List(
            Literal(Constant(123456))) // explicit method args
        ), 
    List(
        Select(This(newTypeName("Predef")),
        newTermName("implicitly"))) // implicit args
    )
)
我试图使用宏实现进行此调用,但这并没有编译,并且给了我:Predef不是一个封闭类。我尝试了不同的方法,但没有成功,也没有找到任何样本


所以问题是:如何为使用宏的方法提供隐式参数?

手动AST操作可能很棘手。尝试
选择(Ident(newTermName(“scala”)),newTermName(“Predef”))
而不是
这个(newTypeName(“Predef”)


或者更好,考虑使用准引号()。有了它们,隐式地编写对的引用变得非常简单,就像

scala.Predef.implicitly

手动AST操作一样棘手。尝试
选择(Ident(newTermName(“scala”)),newTermName(“Predef”))
而不是
这个(newTypeName(“Predef”)


或者更好,考虑使用准引号()。有了它们,隐式地编写对的引用变得非常简单,就像

scala.Predef.implicitly

手动AST操作一样棘手。尝试
选择(Ident(newTermName(“scala”)),newTermName(“Predef”))
而不是
这个(newTypeName(“Predef”)


或者更好,考虑使用准引号()。有了它们,隐式地编写对的引用变得非常简单,就像

scala.Predef.implicitly

手动AST操作一样棘手。尝试
选择(Ident(newTermName(“scala”)),newTermName(“Predef”))
而不是
这个(newTypeName(“Predef”)


或者更好,考虑使用准引号()。有了它们,隐式地编写对的引用变得非常简单,就像隐式地编写scala.Predef。我了解Quasiqueotes,但试图最小化依赖性并更深入地了解正在发生的事情。所有这些宏观的东西都很棒。谢谢谢谢,这很有效。我了解Quasiqueotes,但试图最小化依赖性并更深入地了解正在发生的事情。所有这些宏观的东西都很棒。谢谢谢谢,这很有效。我了解Quasiqueotes,但试图最小化依赖性并更深入地了解正在发生的事情。所有这些宏观的东西都很棒。谢谢谢谢,这很有效。我了解Quasiqueotes,但试图最小化依赖性并更深入地了解正在发生的事情。所有这些宏观的东西都很棒。谢谢