r - 强制 R 函数调用是纯的
问题描述
问题
有没有办法强制 R 中的函数调用是纯的?用例:drake
. 我想保护调用环境及其祖先免受用户函数的修改。
测试用例
before <- ls()
f <- function() {
x <<- 1
data("mtcars")
return("abc")
}
output <- pure_function_call(f())
after <- setdiff(ls(), c("before", "f", "output"))
print(before)
print(after)
print(output)
要求
before
并且after
必须同意。- 字符串
"x"
and"mtcars"
必须不在before
andafter
中。 output
必须相等"abc"
。pure_function_call()
必须f()
在调用测试用例的同一个 R 会话中调用。例如callr::r()
不允许。
过去的尝试失败
local(f())
(function(){f()})()
解决方案
推荐阅读
- ms-access - 无法在 MS Access DB 中查看导航和功能区
- html - 井字游戏 HTML CSS
- php - 在具有多行的 sql fetch 数组结果中添加动态输入框
- node.js - 使用 Mongoose/Express/Node 在一个 POST 路由中保存多个模型文档
- javascript - 访问新创建的 div 文本中的数据属性
- python - Python 乌龟 end_poly() 不起作用
- git - 如何在浏览器中使用 gerrit 创建更改
- playframework - 从 Source 构建时未找到 Play Framework 版本文件
- python - 如何从 python 上的文件中快速获取值?
- python - Asyncio Python 应用在 Heroku 上运行缓慢