【发布时间】:2015-07-27 22:15:01
【问题描述】:
Scala SIP 18 提供了一种强制用户提供导入语句以使用某些高级或不安全语言功能的方法。例如,要使用higher kinded types,您需要
import scala.language.higherKinds
否则您将收到编译器警告,告诉您正在使用高级功能。
有什么方法可以在我自己的库中重现或模仿这种行为?例如我可能有:
trait MongoRepository[E <: Entity] {
val casbahCollection: com.mongodb.casbah.MongoCollection
}
我已将casbahCollection 公开,以便将底层集合公开给用户以备不时之需。但这真的不是我希望我的用户做的事情,因为它是一个泄漏的抽象。所以我想强迫他们做这样的事情:
import my.library.mongo.leakyAbstraction
在做这样的事情之前:
widgetRepo.casbahCollection.find()
有可能吗?有没有什么方法可以提供一种类似的行为,比仅仅在文档中放置一个丑陋的警告更有效?
【问题讨论】:
标签: scala