如何通过Scala中的索引向量获取Vector的子集?

时间:2014-07-12 06:42:08

标签: scala functional-programming

如何创建一个新元素,其元素是idx的{​​{1}}个元素?

a2z

val a2z = ('a' to 'z').toVector    // actually an arbitrary Vector of objects
                                   // 'a' to 'z' only for illustration
val idx = Vector( 3, 9, 22, 24 )

我可以使用简单的for循环,附加结果,但更喜欢用惯用语来做。

1 个答案:

答案 0 :(得分:3)

只需map指数:

idx.map(i => a2z(i))

并在传递给map的函数中,通过每个索引从Vector获取元素。

这适用于所有馆藏(不限于Vector)。


由于参数i仅使用一次,因此可以简化为:

idx.map(a2z(_))

并且Vector.apply只有一个参数,这可以写成(如@Paul在评论中指出的那样):

idx map a2z