作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢新的 scalaz Memo 功能,但发现它缺少两件事:1)它隐藏了我需要访问的底层 Map——至少是所有值的列表,以及 2)我想要一个使用 val 实现的版本我在某处读到的 scala.collection.concurrent.TrieMap 比 var Map 更可取。
我还不是一个隐含的巫师。有没有办法拉皮条这个 Memo 类来添加支持此功能的版本,或者我将不得不剪切/粘贴到一个独特的新类中?
最佳答案
这可以通过内置的 Memo.memo 函数来完成。 Memo.memo 从函数 F => K => V 创建一个 Memo 实例。这也让您可以轻松访问底层特里。例如:
scala> def trieMemo[A, B](trie: collection.concurrent.TrieMap[A, B]) =
Memo.memo[A, B](f => k => trie.getOrElseUpdate(k, f(k)))
trieMemo: [A, B](trie: scala.collection.concurrent.TrieMap[A,B])scalaz.Memo[A,B]
scala> val trie = collection.concurrent.TrieMap[Int, Int]()
trie: scala.collection.concurrent.TrieMap[Int,Int] = TrieMap()
scala> val f = trieMemo(trie)(n => n * n)
f: Int => Int = <function1>
scala> f(5)
res0: Int = 25
scala> f(10)
res1: Int = 100
scala> trie
res2: scala.collection.concurrent.TrieMap[Int,Int] = TrieMap(5 -> 25, 10 -> 100)
关于scala - 拉皮条 scalaz 备忘录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15238362/
我想做一件简单的事情:monkey-patch datetime。我不能完全那样做,因为 datetime 是一个 C 类。 所以我写了下面的代码: from datetime import date
我喜欢新的 scalaz Memo 功能,但发现它缺少两件事:1)它隐藏了我需要访问的底层 Map——至少是所有值的列表,以及 2)我想要一个使用 val 实现的版本我在某处读到的 scala.col
我是一名优秀的程序员,十分优秀!