<button type="button" class="btn btn-info" id="resetBtn">Reset form</button>
需要保留全局可用的缓存。为了初始化缓存,需要传递一个从应用程序中运行的第三方框架获得的变量。
由于对象不接受构造函数参数,如何将变量从框架传递给对象以便在对象构造期间可用?
解决方法是在对象上使用init方法(接受第三方框架变量),并添加一些脚手架代码。但是,还有更好的方法吗?
答案 0 :(得分:2)
通常,您不会在object
上放置可变状态。但是如果你真的需要,可以在其上放置一个var
字段。
object TheObject {
var globalMutableState: Option[TheStateType] = None
}
无论需要设置哪个状态都可以通过作业完成。
TheObject.globalMutableState = Some(???)
无论需要什么引用它都可以直接这样做。
TheObject.globalMutableState.get
答案 1 :(得分:1)
嗯所以我不建议你自己写一个缓存。有些图书馆可以更好地完成工作。这个名为Mango
的Scala项目包含了基于Java的Guava
库,它提供了缓存功能。
您可以编写这样的代码(来自文档),
import java.util.concurrent.TimeUnit
import org.feijoas.mango.common.cache._
// the function to cache
val expensiveFnc = (str: String) => str.length //> expensiveFnc : String => Int
// create a cache with a maximum size of 100 and
// exiration time of 10 minutes
val cache = CacheBuilder.newBuilder()
.maximumSize(100)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(expensiveFnc) //> cache : LoadingCache[String,Int]
cache("MyString") //
此外,还有一个名为ScalaCache
的简单库。
Check it here这仅适用于Scala 2.11,因为使用了宏。