加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 列出所有可见的含义

发布时间:2020-12-16 18:30:26 所属栏目:安全 来源:网络整理
导读:如果可能的话,如何使用反射和宏列出所有可见的含义?我需要这个能够分析可用的类型类实例. 用例 case class Artist (name: String,genres: Set[Genre])case class Genre (name: String)object CatalogueDB extends MySQL { implicit val artistEntity = new
如果可能的话,如何使用反射和宏列出所有可见的含义?我需要这个能够分析可用的类型类实例.

用例

case class Artist (name: String,genres: Set[Genre])
case class Genre (name: String)

object CatalogueDB extends MySQL {
  implicit val artistEntity = new Entity[Artist] {...}
  implicit val genreEntity = new Entity[Genre] {...}
}

trait MySQL {
  // Typeclasses let me restrict methods on `MySQL` to work only for types,// which are associated with its instance.
  // E.g.,the following method will only compile when either an `Artist` or
  // a `Genre` is passed to it when called on `CatalogueDB`:
  def save[e : Entity](e : e) ...
  // But also I need to be able to get a list of those types and 
  // instances of `Entity` typeclass to get the information
  // needed to generate the database schema and 
  // to perform other tasks like that.
  // So,the following method should somehow be able to have
  // the `Entity` instances for `Artist` and `Genre` at its disposal,// when called on `CatalogueDB`.
  def generateSchema ...
}

解决方法

我认为目前还没有办法做到这一点.但是,列出给定类的所有成员并检查它们是否是隐式的应该相对容易 – 无论是在编译时还是在运行时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读