gpt4 book ai didi

scala - 在 Scala 中定义类型安全的可选方法的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 23:56:00 25 4
gpt4 key购买 nike

可选方法是如果类泛型具有特定类型可以应用的方法。
例子:

list.unzip //works only if this is collection of pairs
list.sum //works only if this collection of numbers

目前我想要实现与解压缩具有相同约束的回归方法(即 2d 点的集合),但我不知道如何确保该方法 (implicit asPair: A => (A1, A2)存在以及定义此类转换的最佳位置。

最佳答案

这是什么 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](x: Iterable[(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]

关于scala - 在 Scala 中定义类型安全的可选方法的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com