scala – 如何访问隐式“隐式”,即def a [A:B]或def a [A <
发布时间:2020-12-16 18:15:27 所属栏目:安全 来源:网络整理
导读:例如,我需要访问函数def a [A:ClassManifest]中的清单来获取擦除类.我可以使用Predef.implicitly函数,但在这种情况下,我的代码将与我使用完整形式def a [A](隐式b:ClassManifest [A])一样长. 那些隐式参数是否有方便的生成名称? 解决方法 Predef中有三种
例如,我需要访问函数def a [A:ClassManifest]中的清单来获取擦除类.我可以使用Predef.implicitly函数,但在这种情况下,我的代码将与我使用完整形式def a [A](隐式b:ClassManifest [A])一样长.
那些隐式参数是否有方便的生成名称? 解决方法
Predef中有三种预定义方法可以分别用于Manifest,ClassManife和OptManifest:manifest [T],classManifest [T]和optManifest [T].您可以根据相同的模式为其他类型类编写自己的“隐式getter”.这是例如manifest [T]:
def manifest[T](implicit m: Manifest[T]) = m 所以这就是你如何写自己的: trait UsefulTypeclass[A] { def info = 42 // sample method } // the “implicit getter” def usefulTypeclass[A](implicit tc: UsefulTypeclass[A]) = tc // a method that uses the implicit getter def foo[A: UsefulTypeclass] = usefulTypeclass[A].info (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |