加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala迭代器与地图和For

发布时间:2020-12-16 19:01:41 所属栏目:安全 来源:网络整理
导读:鉴于: val list = List("one","two","three") val it = list.toIterator 我可以跑: list map ("_" +) - List(_one,_two,_three)for (i - list) yield("_" + i) - List(_one,_three) 如果我在迭代器上运行相同,我得到: it map ("_" + ) - Iterator[java.la
鉴于:

val list = List("one","two","three")     
val it = list.toIterator

我可以跑:

list map ("_" +) -> List(_one,_two,_three)
for (i <- list) yield("_" + i) -> List(_one,_three)

如果我在迭代器上运行相同,我得到:

it map ("_" + ) -> Iterator[java.lang.String] = empty iterator
for (i <- it) yield("_" + i) -> Iterator[java.lang.String] = empty iterator

在我运行map / for之后,我不应该收回另一个(非空)Iterator [String]吗?

解决方法

scala> def ints(n: Int): Stream[Int] = n #:: ints(n + 1)
ints: (n: Int)Stream[Int]

scala> val list = List("one","three")
list: List[java.lang.String] = List(one,two,three)

scala> val it = list.toIterator
it: Iterator[java.lang.String] = non-empty iterator

scala> it map ("_" + )
res24: Iterator[java.lang.String] = non-empty iterator

scala> it map ("_" + )
res25: Iterator[java.lang.String] = non-empty iterator

scala> for (i <- it) yield("_" + i)
res26: Iterator[java.lang.String] = non-empty iterator

也许你用过迭代器?

scala> res26.foreach{println}
_one
_two
_three

scala> res26
res28: Iterator[java.lang.String] = empty iterator

由于迭代器是有状态的,不可重置的,一旦你使用它,它是空的,不能再次使用.

相反,您可以使用视图:

scala> val v = list.view
v: java.lang.Object with scala.collection.SeqView[java.lang.String,List[java.lang.String]] = SeqView(one,three)

scala> v map ("_" + )
res29: scala.collection.SeqView[java.lang.String,Seq[_]] = SeqViewM(...)

scala> for (i <- v) yield("_" + i)
res30: scala.collection.SeqView[java.lang.String,Seq[_]] = SeqViewM(...)

scala> res29.foreach{println}
_one
_two
_three

scala> res29
res32: scala.collection.SeqView[java.lang.String,Seq[_]] = SeqViewM(...)

scala> res29.foreach{println}
_one
_two
_three

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读