Scala不连续子数组

4

我是Scala的新手。我看到数组有一个“slice”方法,可以返回一个连续的切片,就像这样:

scala> "zero|one|two|three|four|five".split("\\|").slice(2,5)
res3: Array[String] = Array(two, three, four)

是否有语法糖来取任意的、非连续的、非升序的子数组?类似于:

scala> "zero|one|two|three|four|five".split("\\|").fictionalMethod(4,1,5)
res3: Array[String] = Array(four, one, five)
1个回答

7
我能想到的只使用标准库函数的最短代码是:
Array(4, 1, 5) map "zero|one|two|three|four|five".split("\\|")

这会导致字符串被多次拆分,每个数组索引一次吗? - Ken Williams
通过分割字符串,我应该说多次重新评估 "zero|one|two|three|four|five".split("\\|")" - Ken Williams
在这种情况下,不会这样做,但你说得对,它非常接近这样做。Array(4, 1, 5) map "(zero|one|two|three|four|five".split("\\|").apply(_))将被多次评估。 - Owen
1
你能不能也跳过 apply 呢?我没有使用它也可以正常工作。 - Ivan Vergiliev
+1 聪明的反向思维 - 即在操作之前给出索引 - WestCoastProjects

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接