问题标签 [pass-by-value]

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 投票
5 回答
8243 浏览

c++ - 模板通过值或常量引用传递或...?

我可以这样写一个模板函数

或者这样

我猜第二个选项可能更优化,因为它明确地避免了复制,但我怀疑它对于某些特定类型T(例如仿函数?)也可能失败。那么,什么时候应该使用第一个选项,什么时候使用第二个呢?在我之前的问题的答案中也有这个boost::call_traits<T>::param_type和那个,但是人们不会到处使用它们,是吗?这有经验法则吗?谢谢。boost::reference_wrapper

0 投票
8 回答
15063 浏览

c++ - 我应该在哪里更喜欢按引用传递或按值传递?

在什么情况下我应该更喜欢按引用传递?价值传递?

0 投票
5 回答
8256 浏览

java - 如何修改传入Java方法的枚举


在上面的示例中,我将如何修改方法myResult内的变量alter?由于 Java 是按值传递的,因此该示例只是将其值分配给this.result.

0 投票
1 回答
146 浏览

php - (如何)我应该使用对象引用?

考虑一个例子:

处理公司员工的应用程序库。员工详细信息存储在 CSV 文件中(请不要对此进行判断,因为这仅用作示例)。
处理员工信息的类是(代码非常简化,只是为了给你图片):

现在,目前在应用程序中没有使用任何引用。所有对象变量都是按值传递的。我认为这可能会产生一些开销。因此,一旦创建了所有 Employee 和 Team 对象,我只需尝试将所有调用更改为引用,例如:

但这暂时增加了内存使用量,这让我感到惊讶。我使用的示例只有 200 名员工,但我可以想象,当必须与企业打交道时,这可能会达到数千甚至更多,并且内存使用量会增长更多。

当我想到这个例子时,我试图模仿 ORM,我可以在其中做这样的事情:

理想情况下,“正确”(初始?)对象将只存储在Staff::$employeesand中Staff::$teams,因此Staff::$teams_names['Team Name']将是对Staff::$teams[n]. 同样是对等Staff_Team::$managers的引用数组。 但正如我所提到的 - 一旦我开始使用引用,内存使用量就会增加。Staff::$employees

问题:
那么我应该如何处理呢?
我应该使用按引用传递而不担心内存使用,还是应该使用按值传递?
在这种情况下哪个更好,为什么?

注1:我(认为我)确实理解通过值传递对象和通过引用传递对象之间的区别。我只是问在这个例子中哪个更好。
注意2: Staff_Employee 对象创建后可能会进行一些操作。不过可能非常少。

0 投票
2 回答
2092 浏览

iphone - Objective-C 方法是否支持“按值传递”?

Objective-c 方法是否支持“按值传递”?或者更具体地说:

  1. 传递给方法的参数的默认行为是按引用传递吗?
  2. 如果是,在某些情况下是否有任何变化 - 例如,如果参数只是一个基本的 int 而不是一个对象?(或者这在objective-c中不相关)
  3. 无论如何,是否有一种方法支持基本变量(例如 int)的值传递?
  4. 反正有一个方法支持对象的值传递吗?(我在这里假设没有,但为了完整性会问。当然可以在消息中自己做副本,但是对于这种方法,我认为这不是 Objective-c 方法为您提供的东西,即它是自己动手)

谢谢

0 投票
6 回答
7551 浏览

c# - Properties - by value or reference?

I've got the following public property which exposes an Arraylist:

Elsewhere I'm calling

These seem to be adding elements to the private ArrayList _SpillageRiskDescriptions (through the property) whereas I would've expected this to cause a problem. Therefore am I correct in thinking that properties return a reference to the original variable and not passing it by value? Is this because ArrayList is a reference type? Will the same happen with an int (for example?)

0 投票
1 回答
600 浏览

php - 递归PHP函数写入外部数组

这里真的有两个问题;为什么会这样?可以做些什么呢?

抱歉这个问题太长了,但大部分只是print_r输出!

基本上,我从一个扁平的标签数组 ( $tags) 开始,每个标签都有一个id(数组索引),name并且parent_id. 然后我递归迭代$tags并将所有子标签嵌套在它们的父标签中。(见下文)

有用!(见下文输出)。但是我遇到的问题是我的平面标签数组是从执行嵌套/递归的函数中写入的。(见下文)

标签的扁平数组:

这是嵌套子标签的递归调用函数。问题在于if:我分配$tag给它$tree[$i],然后将children属性添加到它。这导致children属性被添加到$tag. 这就是我想要停止发生的事情。

嵌套标签输出:

children将属性添加到$tree[$i]或分配$tag$tree[$i]以阻止这种情况发生时,我可以做些什么不同的事情?

谢谢!

0 投票
3 回答
5898 浏览

c++ - C++:为什么对于内置(即类 C)类型,按值传递通常比按引用传递更有效

正如标题中所指出的那样

0 投票
2 回答
334 浏览

c - 存储在全局链表中的本地结构(并在其他函数中访问)在 VC2010 中有效。这是正确的 C99/ANSI 吗?

以下代码工作正常:

该结构是在除 main 之外的函数中本地创建的,但我能够从 localstructtest() 范围之外的链表中检索数据。局部变量是在堆栈上创建的,这个结构也是如此吗?或者它实际上是在堆上创建的并且指针/引用仍然有效?当我测试它时,我预计这会失败。我承认我是一名 C++ 程序员,我可能并不完全理解 C 中没有传递引用的后果。如果可以像这样使用结构数据,那么数据什么时候得到释放?

谢谢!

0 投票
4 回答
1842 浏览

c++ - 重载 = 运算符时返回对象的深层副本

所以我为整数创建了一个容器类,我想重载=运算符,以便我可以返回对象的深层副本。我的代码有效,但两个对象指向同一个地址。这是 main.cpp 文件:

这是IntList该类的头文件:

这是IntClass'soperator=()方法的实现: