问题标签 [proto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
351 浏览

r - R中的环境链接

在我的 R 开发中,我需要将函数原语包装在proto对象中,以便在$perform()调用对象的方法时可以将许多参数自动传递给函数。函数调用在内部通过do.call(). 一切都很好,除非函数试图从定义它的闭包中访问变量。在这种情况下,该函数无法解析名称。

这是我发现的重现该行为的最小示例:

我有一个可重复的testthat测试,它也输出大量的诊断输出。诊断输出让我难过。通过查找父环境链,我的位于函数内部的诊断代码找到并打印了函数无法找到的同一个变量。请参阅此要点。.

如何do.call正确设置环境?

0 投票
1 回答
13546 浏览

performance - R:通过引用传递数据帧

R 具有按值传递的语义,可以最大限度地减少意外的副作用(一件好事)。但是,当代码被组织成许多函数/方法以实现可重用性/可读性/可维护性时,以及当代码需要通过例如大数据帧、通过一系列转换/操作来操作大型数据结构时,传递值语义会​​导致大量的数据复制和大量的堆颠簸(一件坏事)。例如,在作为函数参数传递的堆上占用 50Mb 的数据帧将至少复制与函数调用深度相同的次数,并且调用堆栈底部的堆大小将为 N* 50MB。如果函数从调用链的深处返回一个转换/修改的数据帧,那么复制会增加另一个 N。

SO问题避免传递数据框的最佳方法是什么?涉及这个主题,但措辞方式避免直接询问传递引用问题,而获胜的答案基本上是说:“是的,传递值是 R 的工作方式”。这实际上并不是 100% 准确的。R 环境支持按引用传递语义,而诸如proto之类的 OO 框架广泛使用此功能。例如,当一个 proto 对象作为函数参数传递时,它的“魔法包装器”是按值传递的,对于 R 开发人员来说,语义是按引用传递的。

似乎通过引用传递大数据框将是一个常见问题,我想知道其他人是如何处理它的,以及是否有任何库可以实现这一点。在我的搜索中,我没有发现一个。

如果没有可用的东西,我的方法是创建一个包装数据框的原型对象。我会很感激有关应该添加到该对象以使其有用的语法糖的指针,例如,重载 $ 和 [[ 运算符,以及我应该注意的任何陷阱。我不是 R 专家。

与 R 很好地集成的与类型无关的按引用传递解决方案的加分点,尽管我的需求完全是数据帧。

0 投票
2 回答
941 浏览

r - R:环境的缓存/记忆

n我想使用记忆来缓存某些昂贵操作的结果,这样它们就不会被一遍又一遍地计算。

memoise和R.cache符合我的需要。但是,我发现缓存在调用之间并不可靠。

这是一个演示我看到的问题的示例:

根据答案更新

根据使用的是持久缓存还是非持久缓存,这个问题可能会有不同的答案。非持久缓存(例如memoise可能需要单个分配,然后下面的答案是一个不错的方法。持久缓存(例如R.cache)跨会话工作,并且对于多个分配应该是健壮的。上述方法适用于R.cache. 尽管有多个分配,但fn只用 . 调用一次R.cache。它会被调用两次memoise

我认为我有问题的原因R.cache是我将一个proto方法作为函数传递给memoizedCall. proto方法以难以适应的方式绑定到环境R.cache。在这种情况下,您需要做的是取消绑定函数(从实例化方法获取简单函数),然后手动将对象作为第一个参数传递。以下示例显示了它是如何工作的(两者Report都是Report$loader对象proto

我很想知道为什么使用绑定到环境的普通函数但使用实例化方法R.cache会失败。proto

0 投票
1 回答
231 浏览

r - R:原型序列化/反序列化到列表

我希望能够将一些简单proto的对象存储在持久存储(MongoDB)中,它们的属性可以通过其他编程语言的代码进行操作。简单地说,我的意思是它们不会引用其他原型对象。它们的属性将是常见的 R 类型:列表、向量等。此外,每个对象都可以有一个工厂方法,在给定具有其属性值的列表的情况下创建它。因此,MongoDB 到原型的路径似乎很简单。

我不了解proto的内部结构和 R 环境链接,足以知道是否有一种简单而可靠的方法可以将所有 proto 对象的属性作为 R 列表获取。这可以自动完成还是我应该考虑所有实现类似to_list()方法的原型对象?

我正在开发的一些示例代码testthat和一个新的 MongoDB 驱动程序 API 关于我希望在这里看到的行为:

0 投票
3 回答
1528 浏览

r - 如何确定ggplot2对象每一层的geom类型?

作为从我已经创建的绘图中删除特定几何图形的一部分(此处链接),我想动态确定 ggplot2 对象的每一层的几何图形类型。

假设我不知道添加图层的顺序,有没有办法动态查找具有特定几何图形的图层?如果我像下面那样打印出图层,我可以看到这些图层存储在一个列表中,但我似乎无法访问 geom 类型。

我不熟悉 proto 对象,而且我从 proto文档中尝试过的东西似乎不起作用(例如p$layers[[1]]$str())。


感谢下面的答案,我能够想出一个动态删除图层的函数:

0 投票
2 回答
801 浏览

r - 从 R 包中导出环境

我正在开发一个 R 包,它封装了该rmongodb包并创建了一个开发人员友好的界面来使用 MongoDB。该包在proto内部使用。

我想通过一个名为 的原型对象(一个环境)导出一个工厂方法MongoDB,其定义是:

在使用 RStudio & 进行开发devtools期间以及在本地测试期间,这似乎不是问题。但是,我遇到了几个问题:

  • devtools::check()坚持import(MongoDB)在我的 NAMESPACE 文件中放入一个R CMD check失败的文件,并显示“不需要命名空间依赖:'MongoDB'”。

  • 当我删除此导入指令R CMD checktestthat,即使我手动添加export(MongoDB). 但是,devtools::test()在 RStudio 中工作正常。

从 R 包中导出proto对象(环境)的推荐方法是什么?

更新:

根据 Gabor 在下面的建议,我确保MongoDB.Rd声明MongoDB为数据(链接有来源)。我仍然MongoDB无法在测试中不可见(使用testthat)。我的DESCRIPTION文件在这里NAMESPACE这里

0 投票
0 回答
3088 浏览

r - R卡在加载sqldf包

我一直在尝试在 R 中使用 sqldf 包,但它只是在加载所需的包“proto”时停止了。像这样:

library(sqldf)
加载所需的包:DBI
加载所需的包:gsubfn
加载所需的包:proto

我正在使用 R 版本 3.0.0 (2013-04-03)——“蒙面奇迹”。有人可以让我知道这里缺少什么吗?非常感谢!

0 投票
1 回答
248 浏览

r - 在环境中使用 UseMethod 进行方法分派

我希望能够分派给environment. 这将允许我为proto对象定义多态方法(proto对象又从environment类继承)。例如:

所以我可以这样做:

但是,我现在打电话时得到x$foo的只是

如何解决这个问题?

0 投票
2 回答
137 浏览

javascript - __proto__ 属性的 MDN 解释中可能存在错误?

因此,为了进一步巩固我对面向对象 JavaScript 的理解,我一直在如饥似渴地阅读,然后测试我不理解的东西。我正在阅读标题为“Object.prototype.proto”的 Mozilla 开发者网络 (MDN) 文章 https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto

并遇到以下解释:

对于使用 new fun 创建的对象,其中 fun 是在脚本中定义的函数,此值 [ __proto__ ] 是 fun.prototype在评估 new fun 时的值。 (也就是说,如果为 fun.prototype 分配了一个新值,之前创建的 fun 实例将继续将之前的值作为它们的 [[Prototype]],并且后续新的 fun 调用将使用新分配的值作为它们的 [ [原型]]。)

注意:MDN 使用 [[Prototype]] 来指代对象的“内部”原型,在 JavaScript 代码中被称为__proto__ 。

所以我打开了我的 Chrome 控制台,并写了一些简单的 JavaScript:

在此之后,如果我输入孩子。__proto__和 second_child。__proto__进入控制台,我得到相同的值,即 Person {strength: "your value here"}

根据 MDN,不应该是孩子。__proto__ “继续拥有以前的值” Person.prototype 作为他们的内部原型?

0 投票
1 回答
2206 浏览

python - Python:向 protobuf 服务器发送请求

有人可以帮助我吗?

我有一个 .proto 文件。

如何从客户端向套接字服务器发送和打印请求?如何回复客户?

原型文件:

服务器:

客户:

我有一个 HelloWorld 示例,但是通过 SERVICE 发送请求。但是我的 .protofile 中没有服务消息。谢谢!!!