tctcab 刚开始开发包的人都容易这样,乱七八糟的东西都塞在一个包里。比如在我的第一个 R 包 animation 中,我最初就把毫无关系的 formatR::tidy_source()
塞在里面了,过了很久才把它移出去。所以后来我就建议初试开发 R 包的人先折腾几个不太重要的包,踩过一些常见的坑、养成一些克制的习惯之后再开发重要的包。
dapengde 加载字典你可以用懒加载的方式,这样就只需要加载一次了。大意如此(核心是那个双箭头):
lazy_dic = local({
res = list()
function(dic = c('p1', 'p2')) {
dic = match.arg(dic)
if (!is.null(res[[dic]])) return(res[[dic]])
res[[dic]] <<- {
Sys.sleep(5)
'这里是耗费时间的加载字典过程'
}
res[[dic]]
}
})
lazy_dic('p1') # 慢
lazy_dic('p1') # 快
lazy_dic('p2') # 慢
lazy_dic('p2') # 快
Cloud2016 这些价值几个亿的东西我在没遇到非常合适的应用案例之前一般先不会叫唤(写代码容易,一到写文档就犯懒了)。我放在包里面只是我隐约感觉它们会有用。现在才终于找到 blogdown.filename.pre_processor
选项的一个完美应用场景了。