gpt4 book ai didi

scala - 使用压缩集合在 Scala 中初始化案例类

转载 作者:行者123 更新时间:2023-12-04 21:57:25 25 4
gpt4 key购买 nike

我必须从一些原始类型的集合中生成一个对象集合。所以我尝试了以下两种方法并且都有效:

case class Gr (x:Int,y:Int, z:Int)

val x = List(1,2,4,2,5)
val y = Array(1,2,7,4,5)
val z = Seq(1,2,4,8,5)


(x,y,z).zipped.toList.map(a => Gr(a._1,a._2,a._3))
(x,y,z).zipped.map(Gr:(Int,Int,Int) => Gr)

那么,哪个更好,第二个究竟如何工作?还有更好的方法吗?

最佳答案

第一个可以简化为 (x,y,z).zipped.toList.map(Gr.tupled) 第二个可以简化为 (x,y,z ).zipped.map(Gr),这对我来说似乎更短/更清晰。


回想一下 map() 的参数本质上是 A => B,所以不用写 ds.map(d => Math. sqrt(d)),它是 Double => Double 类型,我们可以简单地写成 ds.map(Math.sqrt) 因为 sqrt( ) 是正确的类型。

在这种情况下,Gr 构造函数的类型为 (A,A,A) => B。 Scala 编译器能够获取 zipped 的输出并匹配构造函数类型,因此构造函数可以用作 map() 的参数。

关于scala - 使用压缩集合在 Scala 中初始化案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150550/

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