是否可以在scala 2.10中使用一次宏调用生成几个顶级类?
发布时间:2020-12-16 08:52:29 所属栏目:安全 来源:网络整理
导读:我有一个带有大量样板的程序(遗憾的是,即使是 Scala机制也不能简化).但是如果有一种方法可以用宏生成复杂的顶级类,那么所有的样板都会消失.例如: package org.smthgenerate(params)// becomesclass A { ... }object B { ... }case class C { ... } Scala 2.
我有一个带有大量样板的程序(遗憾的是,即使是
Scala机制也不能简化).但是如果有一种方法可以用宏生成复杂的顶级类,那么所有的样板都会消失.例如:
package org.smth generate(params) // becomes class A { ... } object B { ... } case class C { ... } Scala 2.10宏可以实现吗? 解决方法
简而言之:没有.
计划生成Macro types(即生成类型而不是方法的宏),但它们不是设计也不是指定,更不用说实现了,它们不适用于2.10. 此外,单个宏调用只能生成单个类型.但是,由于类型(特别是对象)可以嵌套,因此这不是限制:您只需生成包含所需所有类的单个顶级对象.这与您的代码之间的区别基本上是一个额外的import语句: package org.smth type O = Generate(params) // becomes object O { class A { ... } object B { ... } case class C { ... } } // which means you need an additional import O._ 他们想到了可以生成完整类的包的宏包,但是我意识到,由于对象是包的超集,因此类型宏可以生成不必要的对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |