斯卡拉 – 这可以简化吗?
发布时间:2020-12-16 19:24:10 所属栏目:安全 来源:网络整理
导读:参考 previous answer of mine on stackoverflow 复杂性的核心只用一种方法说明: implicit def traversableToFilterOps[CC[X] : Traversable[X],T](xs: CC[T])(implicit witness: CC[T] : TraversableLike[T,CC[T]]) = new MoreFilterOperations[CC[T],T](x
参考
previous answer of mine on stackoverflow
复杂性的核心只用一种方法说明: implicit def traversableToFilterOps[CC[X] <: Traversable[X],T] (xs: CC[T])(implicit witness: CC[T] <:< TraversableLike[T,CC[T]]) = new MoreFilterOperations[CC[T],T](xs) 有两个问题: >有没有办法让编译器提示Map符合签名CC [X]<:Traversable [X]? scala> implicitly[Traversable[X] <:< TraversableLike[X,Traversable[X]] forSome { type X }] res8: <:<[Traversable[X],scala.collection.TraversableLike[X,Traversable[X]]] forSome { type X } = <function1> 因此,有没有办法取消样板? 解决方法
我是Scala noob,所以如果这没有用,请不要把我击倒.
假设这个: class MoreFilterOperations[Repr <% TraversableLike[T,Repr],T] (xs: Repr) {} 会这样的吗? // t2fo is short for traversableToFilterOps implicit def t2fo[Repr <% TraversableLike[T,T](xs: Repr) = new MoreFilterOperations[Repr,T](xs) // m2fo is short for mapToFilterOps implicit def m2fo[Repr <% Map[K,V] <% TraversableLike[(K,V),K,V] (xs: Repr) = new MoreFilterOperations[Repr,(K,V)](xs) 这应该工作,因为(根据我的书..编程Scala,p264)以下方法定义与视图绑定: def m [A <% B](arglist): R = ... 它实际上与此方法定义相同: def m [A](arglist)(implicit viewAB: A => B): R = ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- angularjs – ng-file-upload getting TypeError:使用ngf-
- 5天学会jaxws-webservice编程第一天
- angularjs – 使用Angular.js的多个模态
- webservice 此测试窗体只能来自本地计算机的请求.
- angularjs – 自定义指令中的ng-repeat:语法错误:令牌’$
- 配置一个私有的Docker仓库
- Docker入门(二) - Dockerfile
- angularjs – 如何通过GET与Restangular发送参数数组
- cxf,两个声明导致 ObjectFactory 类中发生冲突
- scala – Spark:测试RDD是否为空的高效方法