提问人:Simon Guilloud 提问时间:11/12/2023 最后编辑:stefanobaghinoSimon Guilloud 更新时间:11/13/2023 访问量:58
如何在 Scala 中检测初始化结束
How to detect end of initialization in Scala
问:
我有以下父例(简体) 我写了一个特征“图书馆”作为书籍收藏的模板:
trait Library {
export Library.*
private val catalogue = mutable.Map["String", Book] = mutable.Map()
def writeBook(name:String, content: () => String) : Book = {
// check if books can be recovered from serialization...
val newBook = Book(name, content())
catalogue(name) = newBook
newBook
}
// When initialization is finished
serialize(catalogue)
}
object Library {
class Book(name:String, content: String) {
...
}
我跳过了有关如何在 中使用序列化的详细信息。
然后,用户可以执行以下操作:writeBook
object MyLibrary extends Library {
val aliceInWonderland = newBook("Alice In Wonderland", ???)
val warAndPeace= newBook("War and Peace", ???)
}
重要的部分是,计算书籍内容可能非常昂贵,因此可以在运行之间缓存。此外,为了提高效率,重要的是一次性缓存,而不是为每本书单独缓存。catalogue
我现在有两个问题:
- 我怎样才能在好时机为用户透明地运行我的函数,而不使用已弃用的?
serialize
delayedInit
- 假设我在 中有一个 main 方法,以便用户可以运行他们的每个 MyLibrary 对象,执行任何操作。如何将参数从命令行传递到初始值设定项以激活或停用序列化?
library
我整天都在思考这个问题,但找不到一种解决方法,可以使每个 MyLibrary 对象都没有任何与书籍无关的内容(这很重要)。知道什么是适合弃用的解决方法吗?delayedInit
答: 暂无答案
评论
Library
final class
List[BookInfo]