ruby - R 中带点的参数名称和/或变量

标签 ruby json r rstudio opencpu

对于 Ruby 项目,我需要一个 OpenCPU 服务器来处理 R 包的一些统计信息。 OpenCPU 有一个 JSON REST API,因此使用 Ruby 我可以很容易地连接到它来与 R 通信。到目前为止,一切顺利。

其中一个包的语法很奇怪(至少对我而言)。

add <- function(.argument1, .argument2) {
  return(.argument1 + .argument2)
}

所以这只是一个例子,并不是实际的功能。我觉得奇怪的部分是参数前面的那些点。当我建议删除这些点时,包的开发人员说这是为了在 IDE (R-Studio) 的变量概览中隐藏变量。在我看来,他想将参数(我们称之为私有(private)参数)设为私有(private),或者至少以某种方式确定其范围。我在互联网上搜索以解释 R 的此功能,但一无所获。

实际的问题是:我们使用Ruby,Ruby将数据翻译成JSON发送给OpenCPU。 OpenCPU 查找正确的包/函数,传递参数并执行它。然后它返回到 OpenCPU,OpenCPU 发出 JSON 响应。我们更喜欢使用的 Ruby >1.9 Hash 语法如下所示:

{ argument1: 4, argument2: 3 }.to_json
# => { "argument1": 4, "argument2": 3 }

而不是旧的由包参数强制:

{ ".argument1" => 4, ".argument2" => 3 }.to_json
# => { ".argument1": 4, ".argument2": 3 }

因此,在拼命寻找说服 R 开发人员不要使用这些点的论据时,我的问题仍然没有得到解答:参数前面的这个点在 R 中是否具有真正的功能,或者它只是一种排除的技巧来自 IDE 的变量?

最佳答案

我想你会发现原因来自于 R 中 ls 函数的默认行为,它不返回以点开头的对象。这可以通过 all.names 参数修改:

all.names a logical value. If TRUE, all object names are returned. If FALSE, names which begin with a . are omitted.

以这种方式“隐藏”更多技术功能或变量是很常见的,例如.Machine, .Options, .Fortran, .dynLibs

关于ruby - R 中带点的参数名称和/或变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290744/

相关文章:

ruby 将定界字符串数组转换为散列

json - 是否有推荐的方法来构造多个 JSON 模式?

javascript - 如何使用json数据计算Angular中的平均值

r - 如何比浅拷贝更快地通过引用进行更新?

ruby - Rails validates_presence_of 正在检查保存的记录而不是编辑的记录

ruby - Rails 延迟工作不工作

Ruby - 给定一个嵌套数组的数组,如何仅比较每个嵌套数组的最后一个值来找到最大值?

jQuery 从 json 填充表单

r - Tidyverse 突变困难因素

r - ggplot2:更改图例元素之一的背景颜色