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

scala – 有没有“懒惰地图”?

发布时间:2020-12-16 09:12:42 所属栏目:安全 来源:网络整理
导读:就像Stream是一个懒惰的Seq,是否有一个懒惰版的Map? 我想做什么 val lm = LazyMap[Int,String]((a) = { println("only once") (a * a).toString()})lm.get(10) // print "only once"lm.get(10) // print nothing 解决方法 您基本上是要求缓存. 您可能会使用
就像Stream是一个懒惰的Seq,是否有一个懒惰版的Map?

我想做什么

val lm = LazyMap[Int,String]((a) => {
  println("only once")
  (a * a).toString()
})
lm.get(10) // print "only once"
lm.get(10) // print nothing

解决方法

您基本上是要求缓存.
您可能会使用scalaz.Memo,其中添加了给定功能的记忆.
见 http://eed3si9n.com/learning-scalaz/Memo.html

这将给出以下内容:

val lm: Int => String = Memo.mutableHashMapMemo[Int,String] { a =>
  println("only once")
  (a * a).toString()
}

不过请注意,您所获得的是功能,而不是地图.这意味着您无法测试给定键的存在或不存在,您只能应用.但是,如果我相信你的例子,在你的情况下,这正是你想要的.

(编辑:李大同)

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

    推荐文章
      热点阅读