pass-by-reference 相关问题

通过引用传递是一种参数编组策略,其中变量在内存中的位置传递给函数,而不是变量值的副本,尽管函数出现在源代码中以接收变量本身而不是指向它的指针。

如何在不使用“new”关键字且不修改原始列表的情况下返回新列表?

我正在使用 Java 中的一个简单的 IntList 类。 公共类 IntList { 首先是公共整数; 公共 IntList 休息; 公共 IntList(int f, IntList r) { 首先= f; 休息 = r; ...

回答 1 投票 0

尝试更新 Pandas Dataframe 时出现明显的无限循环

我有一个数据帧,其中有一个名为“部分”的字段。有些行的值为“Concurrent Opinion - x”,其中 x 是相对于当前文档的索引,这是另一个字段...

回答 1 投票 0

Symfony ObjectProphecy 以不同方式对待数组和对象 - 无法更改在 setUp 方法中初始化的数组

与此相关 我正在尝试这个测试代码 与此相关 我正在尝试这个测试代码 <?php use Monolog\Test\TestCase; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophet; class MyBar { public int $bar = 0; } class MyFoo { public function fooArray(): array { return []; } public function fooBar(): MyBar { return new MyBar(); } public function fooInt(): int { return 0; } } final class SimpleTest extends TestCase { private Prophet $prophet; private ObjectProphecy $mock; private array $myArray; private MyBar $myBar; private int $myInt; public function getProphet(): Prophet { return $this->prophet; } protected function setUp(): void { $this->prophet = new Prophet(); $this->myArray = [0]; $this->myBar = new MyBar(); $this->myInt = 0; $this->mock = $this->getProphet()->prophesize(MyFoo::class); $this->mock->fooArray()->willReturn($this->myArray); $this->mock->fooBar()->willReturn($this->myBar); $this->mock->fooInt()->willReturn($this->myInt); } public function test(): void { $this->myArray = [1]; $this->assertEquals([0], $this->mock->reveal()->fooArray()); $this->myBar->bar = 1; $this->assertEquals(1, $this->mock->reveal()->fooBar()->bar); $this->myInt = 1; $this->assertEquals(0, $this->mock->reveal()->fooInt()); } } 请注意测试函数中的差异,数组 $myArray 不会更新,int $myInt 也不会更新,但对象 $myBar 会更新。 为什么他们不以同样的方式行事? 让数组像对象一样工作的推荐方法是什么? 我正在考虑将数组作为参考传递,但根据this,ObjectProphecy可能无法实现。我在顶部链接的问题的答案建议使用另一种方法 MockObject 来解决,但我试图看看 ObjectProphecy 中是否有解决方案。 您正在测试完全不同的东西(比较番茄和土豆)。希望我在下面已经很好地解释了这种情况。 回答你的第一个问题,我以$this->myInt为例(不过,这也涉及到$this->myArray); 在您的 setup() 函数中,您使用三个步骤: 您的第一步是将 0 分配给 $this->myInt: $this->myInt = 0; 你的第二步是创建一个对象: $this->mock = $this->getProphet()->prophesize(MyFoo::class); 你的第三步(#3)是为对象分配值0(来自$this->myInt): $this->mock->fooInt()->willReturn($this->myInt); 然后在你的实际测试函数中(test()): 作为第四步 (#4),您将 $this->myInt 值更改为 1: $this->myInt = 1; 作为第五步(#5),您实际上正在测试 object 的值,根据 step #3 仍应返回 0: $this->assertEquals(0, $this->mock->reveal()->fooInt()); 在最后一步中,您实际上是将 0 与您在 step #3 中设置的值(根据 $this->myInt = 0 为 step #1)进行比较。例如。您的测试将通过。 Step #4 没有做任何事情,因为您没有更改对象的值(您正在测试),您只是更改 class 中的私有参数的值。仅当您测试 $this->myInt 的值时,您的预期行为才有效,如下所示: $this->assertEquals(0, $this->myInt); 因此,要解决您的问题,请重写您的测试或确保您更改正确的值(在您的 class 内或在 object 内)。 为了解释您的 object 示例以及为什么有所不同,您实际上是在更改 object 中的值并在测试中测试相同的 value(正确测试): $this->myBar->bar = 1; $this->assertEquals(1, $this->mock->reveal()->fooBar()->bar); 您更改了 value 中的 object。再一次,您的测试将通过。 要回答你的第二个问题,请将 step #4 更改为: $this->myInt = 1; $this->mock->fooInt()->willReturn($this->myInt); // and then to do your test from step #5: $this->assertEquals(0, $this->mock->reveal()->fooInt()); // this should fail.

回答 1 投票 0

将参数列表传递给 ggstatsplot 函数

我正在使用 ggstatsplot 制作许多类似的图,但每个图之间绘制的确切数据或变量会有所不同。我想将大部分(常量)参数分配给一个变量......

回答 1 投票 0

R:将参数列表传递给 ggstatsplot 函数

我正在使用 ggstatsplot 制作许多类似的图,但每个图之间绘制的确切数据或变量会有所不同。我想将大部分(常量)参数分配给一个变量......

回答 1 投票 0

如果数组是在setUp方法中初始化的,则在测试函数中将值添加到Symfony TestCase类中的数组

如果问题看起来不太对劲,我很抱歉,我对 Stack Overflow 和 php 都是新手。 我的课程看起来有点像这样: 最终类 MyClass 扩展了 TestCase { 私人 MyService $myService; 私人

回答 1 投票 0

如何将 DOMDocument 传递给子例程

我有一堆来自德国商业登记处的所谓“结构化数据”,它们以 xml 文件形式存在(一个文件始终保存一家公司的数据)。数据结构对应...

回答 1 投票 0

将数组传递给 ruby 函数

好吧,我对 ruby 如何将其参数传递给函数感到困惑。我在文档中读到 ruby 按值传递,但就我而言,它看起来像是按引用传递 这是专业人士...

回答 2 投票 0

传递 constexpr 成员作为引用会在调试或 -O1 模式下触发 gcc 的链接器错误

下面的代码会触发 gcc '未定义的引用 Foo::d' 和 '未定义的引用 Foo::i' 错误。奇怪的是,只有当我在 -Og 或 -O1 优化模式下编译它时才会发生这种情况,但如果使用 -O2 o 则不会......

回答 1 投票 0

递归和引用传递

我有一棵具有以下结构的类别树: [6] => 数组 ( [id] => 6 [名称] => 计算机 [产品数量] => 0 [孩子] => 数组 ...

回答 5 投票 0

如何使用pybind11引用python来公开修改数据的c++函数?

我正在使用 pybind11 创建 c++ 库的 python 接口, 其中一个函数接收指向 char 数组的指针并更新其值, 问题是 char 数组的值发生了变化...

回答 1 投票 0

在Python中传递值[重复]

当你将像列表、数组这样的集合传递给Python中的另一个函数时,它会复制它,还是只是一个指针?

回答 8 投票 0

如果数组是通过引用传递的,为什么我应该使用 int(&)[]

#包括 使用命名空间 std; 无效更改(int arr [3]){ 对于 (int i = 0; i < 3; i++) { arr[i] = 1; } } int Test() { int arr[3] = { 0, 0, 0 }; for (int ...

回答 1 投票 0

在c++中通过引用传递可选参数

我在 C++ 中遇到可选函数参数的问题 我想做的是编写带有通过引用传递的可选参数的函数,这样我就可以通过两种方式使用它(1)和...

回答 13 投票 0

在 C++ 中传递 va_list 作为函数的引用是否合法?

在代码审查/clang-tidy 运行时,我遇到了一个具有如下签名的函数: void appendFoo(const char * fmt, va_list& rVaList); 我以前从未见过这个。 Afaik,你可以通过va...

回答 1 投票 0

专门化可变参数模板以跳过非引用参数

我正在为一些客户端-服务器函数调用编写一个包装器,我需要一种方法在实际调用之前或之后设置一些输出参数。示例代码如下: #包括 #包括...

回答 1 投票 0

如何在c++中使用sizeof()作为reference_to_array

如何使用sizeof()来确定数组引用的大小? 我在 main() 中声明了一个数组,并使用 sizeof() 来打印它占用的总大小。 然后我将数组传递给 fu...

回答 1 投票 0

如何在 bash 中通过 ref 将参数传递给脚本

请注意,我说的是通过引用将参数传递给脚本,而不是函数。我已经检查过这里和这里,他们讨论了使用函数传递参数。 我想要什么我...

回答 1 投票 0

使用引用类型变量

可能是周五下午 5 点左右,但我在学习如何在 PowerShell 中使用 [ref] 类型变量时遇到了困难。 以下打印“NotTest” [ref]$refString = '测试' $字符串=$

回答 1 投票 0

std::string 引用类成员的奇怪行为

给出以下代码: #包括 类 Foo { 民众: Foo(const std::string& label) : label_(label) {} 无效打印(){ std::cout << label_; ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.