是否有可能重新定义R如何查找变量?
具体来说,我有2个R进程:客户端和服务器。我想对服务器进程的变量范围规则进行以下扩展:如果在任何父环境中找不到x
,而是查询客户端进程x
:< / p>
# i.e. when (in the server process) I write
x
# I actually mean:
if (exists("x")) {
x
} else {
getFromClient("x", port = 1234L)
}
这可能吗?
我正在做一点IPC工作,客户端进程可以向服务器进程发出命令来执行。但是,命令不可避免地对数据(驻留在客户端)进行操作,我当前不得不手动硬编码需要从客户端导出到服务器的每个变量。
我也不喜欢简单地导出我的客户端进程的整个全局环境,其中可能包含大量冗余数据,这些数据对于处理手头的命令无用。
服务器只需要在需要变量时从客户端查询任何变量就好了。
答案 0 :(得分:1)
这对我来说非常懒惰和危险,我建议反对它。
服务器代码应该知道它需要从客户端获取哪些变量,并且应该明确地获取这些变量而不是等待尝试捕获“未定义变量”错误。
如果服务器代码试图获取x$foo
,其中x
是服务器上的列表但没有$foo
元素,该怎么办?如何分配不存在的对象?错别字怎么样?
变量诞生的每个程序中应该只有一个点,此时你应该用一个值定义它或者从服务器获取它的值 - 没有必要试着对它懒惰。
您冒险编写仅在客户端 - 服务器环境中运行的代码,因此难以测试。