问题标签 [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.
r - R中的环境链接
在我的 R 开发中,我需要将函数原语包装在proto
对象中,以便在$perform()
调用对象的方法时可以将许多参数自动传递给函数。函数调用在内部通过do.call()
. 一切都很好,除非函数试图从定义它的闭包中访问变量。在这种情况下,该函数无法解析名称。
这是我发现的重现该行为的最小示例:
我有一个可重复的testthat
测试,它也输出大量的诊断输出。诊断输出让我难过。通过查找父环境链,我的位于函数内部的诊断代码找到并打印了函数无法找到的同一个变量。请参阅此要点。.
如何do.call
正确设置环境?
performance - R:通过引用传递数据帧
R 具有按值传递的语义,可以最大限度地减少意外的副作用(一件好事)。但是,当代码被组织成许多函数/方法以实现可重用性/可读性/可维护性时,以及当代码需要通过例如大数据帧、通过一系列转换/操作来操作大型数据结构时,传递值语义会导致大量的数据复制和大量的堆颠簸(一件坏事)。例如,在作为函数参数传递的堆上占用 50Mb 的数据帧将至少复制与函数调用深度相同的次数,并且调用堆栈底部的堆大小将为 N* 50MB。如果函数从调用链的深处返回一个转换/修改的数据帧,那么复制会增加另一个 N。
SO问题避免传递数据框的最佳方法是什么?涉及这个主题,但措辞方式避免直接询问传递引用问题,而获胜的答案基本上是说:“是的,传递值是 R 的工作方式”。这实际上并不是 100% 准确的。R 环境支持按引用传递语义,而诸如proto之类的 OO 框架广泛使用此功能。例如,当一个 proto 对象作为函数参数传递时,它的“魔法包装器”是按值传递的,对于 R 开发人员来说,语义是按引用传递的。
似乎通过引用传递大数据框将是一个常见问题,我想知道其他人是如何处理它的,以及是否有任何库可以实现这一点。在我的搜索中,我没有发现一个。
如果没有可用的东西,我的方法是创建一个包装数据框的原型对象。我会很感激有关应该添加到该对象以使其有用的语法糖的指针,例如,重载 $ 和 [[ 运算符,以及我应该注意的任何陷阱。我不是 R 专家。
与 R 很好地集成的与类型无关的按引用传递解决方案的加分点,尽管我的需求完全是数据帧。
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
r - R:原型序列化/反序列化到列表
我希望能够将一些简单proto
的对象存储在持久存储(MongoDB)中,它们的属性可以通过其他编程语言的代码进行操作。简单地说,我的意思是它们不会引用其他原型对象。它们的属性将是常见的 R 类型:列表、向量等。此外,每个对象都可以有一个工厂方法,在给定具有其属性值的列表的情况下创建它。因此,MongoDB 到原型的路径似乎很简单。
我不了解proto
的内部结构和 R 环境链接,足以知道是否有一种简单而可靠的方法可以将所有 proto 对象的属性作为 R 列表获取。这可以自动完成还是我应该考虑所有实现类似to_list()
方法的原型对象?
我正在开发的一些示例代码testthat
和一个新的 MongoDB 驱动程序 API 关于我希望在这里看到的行为:
r - 从 R 包中导出环境
我正在开发一个 R 包,它封装了该rmongodb
包并创建了一个开发人员友好的界面来使用 MongoDB。该包在proto
内部使用。
我想通过一个名为 的原型对象(一个环境)导出一个工厂方法MongoDB
,其定义是:
在使用 RStudio & 进行开发devtools
期间以及在本地测试期间,这似乎不是问题。但是,我遇到了几个问题:
devtools::check()
坚持import(MongoDB)
在我的 NAMESPACE 文件中放入一个R CMD check
失败的文件,并显示“不需要命名空间依赖:'MongoDB'”。当我删除此导入指令
R CMD check
时testthat
,即使我手动添加export(MongoDB)
. 但是,devtools::test()
在 RStudio 中工作正常。
从 R 包中导出proto
对象(环境)的推荐方法是什么?
更新:
根据 Gabor 在下面的建议,我确保MongoDB.Rd
声明MongoDB
为数据(链接有来源)。我仍然MongoDB
无法在测试中不可见(使用testthat
)。我的DESCRIPTION
文件在这里,NAMESPACE
在这里。
r - R卡在加载sqldf包
我一直在尝试在 R 中使用 sqldf 包,但它只是在加载所需的包“proto”时停止了。像这样:
library(sqldf)
加载所需的包:DBI
加载所需的包:gsubfn
加载所需的包:proto
我正在使用 R 版本 3.0.0 (2013-04-03)——“蒙面奇迹”。有人可以让我知道这里缺少什么吗?非常感谢!
r - 在环境中使用 UseMethod 进行方法分派
我希望能够分派给environment
. 这将允许我为proto
对象定义多态方法(proto
对象又从environment
类继承)。例如:
所以我可以这样做:
但是,我现在打电话时得到x$foo
的只是
如何解决这个问题?
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 作为他们的内部原型?
python - Python:向 protobuf 服务器发送请求
有人可以帮助我吗?
我有一个 .proto 文件。
如何从客户端向套接字服务器发送和打印请求?如何回复客户?
原型文件:
服务器:
客户:
我有一个 HelloWorld 示例,但是通过 SERVICE 发送请求。但是我的 .protofile 中没有服务消息。谢谢!!!