美文网首页
一个特设多态的小例子

一个特设多态的小例子

作者: 以梦为马驾驾驾 | 来源:发表于2021-12-17 11:31 被阅读0次

    ListenerEvent是某个库的类, 想要转化为它所代表的的ddl操作,通过implicit, 存在类型(通过定义T2DDL改成了上下文限定), 完成了特设多台

    trait ToDDLModification[T <: ListenerEvent] {
      def toDDLModification: DDLModification
    }
    
    object ToDDLModification{
    
      type T2DDL[X] = X => DDLModification
    
      implicit class ToDDL[T <: ListenerEvent : T2DDL](event: T) extends ToDDLModification[T] {
        override def toDDLModification: DDLModification = {
          implicitly[T2DDL[T]].apply(event)
        }
      }
    
      implicit val alterParFunc: T2DDL[AlterPartitionEvent] = e => {
       DDLModification("")
      }
    
      implicit val createDbFunc: T2DDL[CreateDatabaseEvent] = e => {
       DDLModification("")
      }
    }
    

    相关文章

      网友评论

          本文标题:一个特设多态的小例子

          本文链接:https://www.haomeiwen.com/subject/trhifrtx.html