空格函数等效于scala?

问题描述 投票:1回答:3
val list = List(4, 6, 7, 8, 9, 13, 14)
list.foreach(num ⇒ println(num * 4))
list should be()

我试图弄清楚它应该是什么但是没有得到答案。我认为它必须是空的或者像Java中的void函数,但我不知道Scala中的等效函数。 enter image description here

scala foreach void scalatest
3个回答
1
投票

Scala中的空白等价物是Unitforeach确实返回单位。

def foreach(f: (A) ⇒ Unit): Unit 

所以适当的(和无用的)测试将是这样的:

list should be(List(4, 6, 7, 8, 9, 13, 14)) 

还要考虑到即使它函数返回一些东西,你也没有捕获它,所以列表将保持不变。

如果要检索函数的结果,则应将其分配给另一个值,如下所示:(使用map来显示):

val result = list.map(num ⇒ num * 4)
result should be(List(16, 24, 28, 32, 36, 52, 56))

0
投票

我不明白你的函数是什么意思,但有一种方法可以像这样表示空列表:

list should be List.empty[Int]

0
投票

java中的void表示没有返回值,scala中的Unit用于相同的目的。

当你执行list.foreach时,没有返回值并且列表没有被更改(或者返回值是Unit),而是将函数应用于每个成员并且丢弃返回值。

我想你正在寻找一个平面图。 list.flatmap(f)将对每个元素应用f,并假设从f返回的值是一个集合,然后将其展平。例如,如果list是(0,2,4)并且f返回一个列表,其中1重复了成员值,那么f将返回list(),list(1,1)和list(1,1,1,1)然后返回返回值将是列表(1,1,1,1,1,1)

在这种情况下,只需返回list()以获得list()的总返回值。

© www.soinside.com 2019 - 2024. All rights reserved.