如何覆盖R中的变量查找



是否可以重新定义R查找变量的方式?

具体来说,我有2个R进程:客户端和服务器。我想对服务器进程的变量作用域规则进行以下扩展:如果在任何父环境中都找不到x,请在客户端进程中查询x

# i.e. when (in the server process) I write
x
# I actually mean:
if (exists("x")) {
x
} else {
getFromClient("x", port = 1234L)
}

这可能吗?

背景

我现在正在做一些IPC工作,客户端进程可以向服务器进程发出命令来执行。然而,命令不可避免地会对数据(驻留在客户端)进行操作,并且我目前被迫在需要从客户端导出到服务器的每个变量中手动硬编码。

我也不喜欢简单地导出我的客户端进程的整个全局环境的选项,其中可能包含许多对处理手头的命令没有用处的冗余数据。

对于服务器来说,在需要变量时从客户端查询任何变量要好得多。

这在我看来是非常懒惰和危险的,我建议不要这样做。

服务器代码应该知道需要从客户端获取哪些变量,并且应该显式获取这些变量,而不是等待尝试捕获"未定义变量"错误。

如果服务器代码试图获取x$foo,其中x是服务器上的列表,但没有$foo元素,该怎么办?对不存在的对象的赋值呢?打字错误怎么办?

每个程序中应该只有一个变量诞生的点,在这个点上,你应该用一个值来定义它,或者从服务器上获取它的值——没有必要对此感到懒惰

编写只在客户端-服务器环境中运行的代码是有风险的,因此很难进行测试。

相关内容

  • 没有找到相关文章

最新更新