scala宏:向类添加函数
发布时间:2020-12-16 18:03:54 所属栏目:安全 来源:网络整理
导读:我是 scala宏的新手,我正在使用 scala 2.10.0-RC3. 我想编写一个向类添加函数的宏.用法示例: trait MyTrait { def addF = macro { /*add "def f = 3" to class*/ }}class MyClass extends MyTrait { addF //Adds the "def f" to MyClass}object Main { val
我是
scala宏的新手,我正在使用
scala 2.10.0-RC3.
我想编写一个向类添加函数的宏.用法示例: trait MyTrait { def addF = macro { /*add "def f = 3" to class*/ } } class MyClass extends MyTrait { addF //Adds the "def f" to MyClass } object Main { val t = new MyClass assert(t.f==3) } 我在以下场景中需要这个.我的第一次尝试没有使用宏但没有用,因为我不能继承两次相同的特性. trait AddF[T] { def f(t: T) { /* ...do sthg ... */ } } class MyClass extends AddF[Int] with AddF[String] 使用宏解决方案,我可以写 class MyClass extends MyTrait { addF[Int]() addF[String]() } 有没有办法用scala宏做到这一点?或者有另一种方法来实现这一目标吗? 解决方法
目前无法添加,修改或删除宏外可见的定义.即你可以创建一个扩展本地的类或方法(例如,发出一个ClassDef树作为宏返回结果的一部分),但是没有办法影响外部世界.
然而,我们计划在http://scalamacros.org/future.html中粗略地描述这个功能.此外,已经有一个可以生成新的顶级类的可靠原型.如果您想看一下,请与我联系. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |