在 scala 上映射 List/Seq
map on a scala List/Seq
我有下面的简单代码
private def tt(l:Seq[Int]):Seq[Future[Unit]] = {
val aa = l.map(_=>Future.successful(()))
aa
}
我可以很容易地理解我正在 returning Future[Unit] type corresponding to each element of my sequence "l" that is passed to method tt.
的事实。因此很容易说 "aa"
是 Seq[Future[Unit]]
类型。我无法理解的是,当我的 "l" 序列的长度为零时,将永远不会执行映射,为什么以及如何才能得到 Seq[Future[Unit]] 因为我已经明确地输入了 return 类型,并且显然 scala 很高兴无论 "l" 是什么,即使是空的,“aa' 仍然会导致 Seq[Future[Unit]]。但我没有得到为什么
...when my "l", the sequence is of length zero, map will never be executed....
以上说法不正确。 map
,当在空序列上调用时,是执行的:在空序列上调用map
return是一个空序列。
当你将空Seq
传递给tt
时,return类型确实是Seq[Future[Unit]]
。 returned 是一个空的 Seq[Future[Unit]]
:
scala> def tt(l:Seq[Int]):Seq[Future[Unit]] = {
| val aa = l.map(_=>Future.successful(()))
| aa
| }
tt: (l: Seq[Int])Seq[scala.concurrent.Future[Unit]]
scala> tt(Seq())
res0: Seq[scala.concurrent.Future[Unit]] = List()
在上面的代码中,map
是 在 l
上执行的,即使 l
为空。
这与在任何类型的空 Seq
上调用 map
相同。例如,要将 Seq[String]
转换为 Seq[Int]
:
scala> Seq[String]().map(_.toInt)
res2: Seq[Int] = List()
在空 Seq[String]
上调用 .map(_.toInt)
的结果是空 Seq[Int]
。
我有下面的简单代码
private def tt(l:Seq[Int]):Seq[Future[Unit]] = {
val aa = l.map(_=>Future.successful(()))
aa
}
我可以很容易地理解我正在 returning Future[Unit] type corresponding to each element of my sequence "l" that is passed to method tt.
的事实。因此很容易说 "aa"
是 Seq[Future[Unit]]
类型。我无法理解的是,当我的 "l" 序列的长度为零时,将永远不会执行映射,为什么以及如何才能得到 Seq[Future[Unit]] 因为我已经明确地输入了 return 类型,并且显然 scala 很高兴无论 "l" 是什么,即使是空的,“aa' 仍然会导致 Seq[Future[Unit]]。但我没有得到为什么
...when my "l", the sequence is of length zero, map will never be executed....
以上说法不正确。 map
,当在空序列上调用时,是执行的:在空序列上调用map
return是一个空序列。
当你将空Seq
传递给tt
时,return类型确实是Seq[Future[Unit]]
。 returned 是一个空的 Seq[Future[Unit]]
:
scala> def tt(l:Seq[Int]):Seq[Future[Unit]] = {
| val aa = l.map(_=>Future.successful(()))
| aa
| }
tt: (l: Seq[Int])Seq[scala.concurrent.Future[Unit]]
scala> tt(Seq())
res0: Seq[scala.concurrent.Future[Unit]] = List()
在上面的代码中,map
是 在 l
上执行的,即使 l
为空。
这与在任何类型的空 Seq
上调用 map
相同。例如,要将 Seq[String]
转换为 Seq[Int]
:
scala> Seq[String]().map(_.toInt)
res2: Seq[Int] = List()
在空 Seq[String]
上调用 .map(_.toInt)
的结果是空 Seq[Int]
。