作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是阶梯书中的一个例子:
object Example1 {
def lazyMap[T, U](coll: Iterable[T], f: T => U) = {
new Iterable[U] {
def iterator = coll.iterator.map(f)
}
}
val v = lazyMap[Int, Int](Vector(1, 2, 3, 4), x => {
println("Run!")
x * 2
})
}
控制台结果:
Run!
Run!
Run!
Run!
v: Iterable[Int] = (2, 4, 6, 8)
怎么这么懒?
最佳答案
它调用 map 函数的原因是因为您在调用 lazyMap 上的 toString
函数的 Scala 控制台中运行。如果您通过在代码末尾添加 ""
确保不返回该值,它将不会映射:
scala> def lazyMap[T, U](coll: Iterable[T], f: T => U) = {
new Iterable[U] {
def iterator = coll.iterator.map(f)
}
}
lazyMap: [T, U](coll: Iterable[T], f: T => U)Iterable[U]
scala> lazyMap[Int, Int](Vector(1, 2, 3, 4), x => {
println("Run!")
x * 2
}); ""
res8: String = ""
scala>
关于scala - lazyMap其实不懒惰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33187567/
随着互联网在中国将近20年的发展,内容领域也从原来傻大黑粗的拼流量,进入了垂直领域的精根细作时代。我相信很多做过互联网运营的小伙伴,一定接触过内容运营,或者专职做内容运营。但是,很多自以为做了很久内
我是一名优秀的程序员,十分优秀!