假设我有一个数字adxl34x_i2c_probe
的运行时列表,我在编译时不知道的长度,例如
Int
。
我还有一个带numbers: Seq[Int]
元素并返回Int
的函数,例如
A
我有另一个函数,它接受f: Int => A
元素并返回Int
,例如
B
如果我分别使用g: Int => B
和f
映射列表,我最终会得到2个列表:
g
有没有办法让我编写一个与这两个列表一起使用的函数,并确保在编译时两个元素的数量相同?
由于val list1: Seq[A] = numbers.map(f)
val list2: Seq[B] = numbers.map(g)
和list1
list2
来自同一个列表map
),我认为可以使用Shapeless' numbers
,但在编译时不知道Sized
的长度,我无法弄清楚如何做到这一点。
答案 0 :(得分:4)
解决这个问题的一个低技术解决方案是避免首先创建两个单独的列表,
val list12: Seq[(A, B)] = numbers.map { i => (f(i), g(i)) }
我建议在部署重型火炮之前探索这条大道。