在Scala中定义类型安全可选方法的最佳方法是什么?
发布时间:2020-12-16 18:40:31 所属栏目:安全 来源:网络整理
导读:可选方法是在类泛型具有特定类型时可以应用的方法. 例子: list.unzip //works only if this is collection of pairslist.sum //works only if this collection of numbers 目前我想要实现回归方法,其具有与解压缩相同的约束(即2d点的集合),但我不知道如何确
可选方法是在类泛型具有特定类型时可以应用的方法.
例子: list.unzip //works only if this is collection of pairs list.sum //works only if this collection of numbers 目前我想要实现回归方法,其具有与解压缩相同的约束(即2d点的集合),但我不知道如何确保该方法(隐含asPair:A =>(A1,A2)exsist和哪里最好定义此类转换的位置. 解决方法
以下是TraversableOnce.toMap所做的事情,以确保仅在对的集合上调用它.
def toMap[T,U](implicit ev: A <:< (T,U)): immutable.Map[T,U] = { val b = immutable.Map.newBuilder[T,U] for (x <- self) b += x b.result } 但是,如果您希望在现有集合类中添加类似的方法,则可以使其更加简单: class EnhancedIterable[T,U](x: Iterable[(T,U)]) { // CanBuildFrom omitted for brevity def swapAll() = x.map(_.swap) } implicit def enhanceIterable[T,U)]) = new EnhancedIterable(x) List((1,2),(3,4),(5,6)).swapAll // List((2,1),(4,3),(6,5)) List(1,2,3).swapAll // error: value swapAll is not a member of List[Int] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |