AnyKind 的种类多态性用例

问题描述

给定

trait Int                // proper type
trait List[A]            // 1st-order-kinded type constructor 
trait Functor[F[_]]      // higher-order-kinded type constructor taking type constructor
trait I[H[F[_]]]         // higher-order-kinded type constructor taking higher-order type constructor that takes 1st-order type constructor

与声明的类型参数的种类相比,我们不能传递不同种类的类型参数

scala> def f[F[_[_[_]]]] = 42                                                                                                                                
def f[F[_$1]] => Int

scala> f[I]                                                                                                                                                  
val res5: Int = 42

scala> f[Functor]                                                                                                                                            
1 |f[Functor]
  |  ^
  |  Type argument Functor does not conform to upper bound [_$1[_$2]] =>> Any

但是我们可以通过 AnyKind

声明类型参数是多态的
scala> def f[A <: AnyKind] = 42                                                                                                       
def f[A <: AnyKind] => Int

scala> f[Int]
val rES10: Int = 42

scala> f[List]                                                                                                                                               
val res11: Int = 42

scala> f[Functor]                                                                                                                                            
val res12: Int = 42

scala> f[I]                                                                                                                                                  
val res13: Int = 42

AnyKind 的用例是什么?它解决了什么实际问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)