Scala Stream混乱
发布时间:2020-12-16 18:15:23 所属栏目:安全 来源:网络整理
导读:运行: lazy val s: Stream[Int] = 1 #:: 2 #:: {val x = s.tail.map(_+1); println(" " + x.head); x}s.take(5).toList 我期待: List(2,3) List(2,3,4)List(1,2,4,5) 我得到: 3List(1,5) 你能解释一下吗? 解决方法 你得到一个Int而不是一个List的原因是s
运行:
lazy val s: Stream[Int] = 1 #:: 2 #:: {val x = s.tail.map(_+1); println("> " + x.head); x} s.take(5).toList 我期待: > List(2,3) > List(2,3,4) List(1,2,4,5) 我得到: > 3 List(1,5) 你能解释一下吗? 解决方法
你得到一个Int而不是一个List的原因是s是一个整数流,所以它包含整数,而不是列表.
你得到3的原因是(1,5,…)(即s)的尾部是(2,…)并且如果你将1映射到那个,你会得到(3,6,7,…),那个头是3. 仅打印一个整数的原因是表达式仅被评估一次以获得尾部的流.之后,仅评估s.tail.map(_ 1)返回的流(不包含任何print语句). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |