问题标签 [call-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.
scala - 在 Scala 中,什么时候是使用惰性求值参数而不是使用函数作为参数的好时机?
得到这个结果:
似乎lazyHello 和anoyHello 执行相同。
那么,在 Scala 中,什么时候是使用惰性求值参数而不是使用函数作为参数的好时机呢?
programming-languages - 按名称/引用/值调用
有人可以通过名称、参考和价值来深入解释调用,并将它们相互比较吗?
简单的例子也很棒。我非常专注于按名称调用,感觉与按引用调用非常相似。
python - “按引用调用”和“按值调用,其中值是指针”有什么区别?
我阅读了这篇关于 Python 变量绑定的文章。它因教授错误的假设而受到批评。它指出 Python 既不是“按引用调用”也不是“按值调用”。
有人在评论中说,Python 实际上遵循了一个明确的“按值调用”模型,其中“值”是一个对象指针。我不明白这和引用调用之间的区别。
这不是关于“按值”和“按引用”之间的区别,而是关于“按值(对象指针作为值)”和“按引用”之间的区别。
假设您通过引用传递了一个变量。这个引用不是一个正在传递的值,指向一个目标吗?为什么不一样?
我认为我知道什么在 Python 中有效,什么无效,但这在某种程度上对我来说是一个不清楚的区别。
谢谢!
java - 重新审视按值调用与按引用调用
我先说。我知道标题怀疑我在问一个在这里和互联网上多次回答的问题。我确实进行了研究,但我只是找不到令人满意的答案。
我的问题最终归结为这个。为什么 Java 按值调用和 C++ 按引用调用(使用指针时)?
在传递引用时考虑在 Java 中调用方法,在传递指针时考虑在 c++ 中调用。最后,在这两种情况下,我都可以进行调用者可见的更改。同样在这两种情况下,我都将对象的地址传递给函数。实际上,当传递指针时,我也在复制,即在 c++ 中按值进行调用,不是吗?
您可以通过运行以下代码来简单地验证这种情况:
这将打印两次相同的地址。
对我来说,仅仅通过引用来证明调用的合理性是不够的,你可以使用它来执行交换功能。我想知道按引用调用的核心是什么。
先感谢您。
c++ - 如何将字符串文字传递给用 C++ 处理的函数?
考虑以下代码:
现在考虑以下两种情况:
1) 函数passStringObject()
被调用。
2)passStringLiteral()
调用函数。
在情况 1 中,我会假设 - 当在其中调用函数时consumeString
-passStringObject
变量stringObject
只是传递给函数consumeString
并且(因为按值调用)调用字符串类的复制构造函数,以便参数 str 是stringObject
传递给函数的变量consumeString
。
但是在第 2 种情况下consumeString
调用函数时会发生什么?在调用复制构造函数并将“隐藏”变量的值复制到参数之前,是否隐式调用了字符串类的(重载)赋值运算符(可能将文字分配给后台的某个“隐藏”变量?)str
?
java - Java 按值调用
我意识到这是一个常见问题,但在这里..
我试图写这个来弄清楚Java如何处理参数传递等等..
在这里,我可以更改传递给方法的对象内的基元的值,但不能更改传递给方法的基元的值。有什么原因吗。
c - 为什么宏函数不按值调用?
印刷:a=4,b=1
在输出中,a和b已经交换;为什么宏不按值调用?请帮助我解释结果。
c - 传递地址,但它的工作方式类似于 C 中的按值调用?
您好,我是 C 编程语言的初学者。最近我读到了按值调用和按地址调用。我了解到,在被调用函数中的地址变化反映了被调用者。但是,以下代码不能那样工作。
当我传递地址时,为什么被调用函数所做的更改不反映调用者?
perl - 如果 perl 是按引用调用的,为什么会发生这种情况?
我读过 perl 在执行子程序时使用引用调用。我编写了一段简单的代码来检查这个属性,但它的行为就像 perl 是按值调用的:
这会产生以下输出:
如果以引用调用的方式处理参数,x 不应该等于 x1 并且 y 不应该等于 y1 吗?
java - 当我在java中创建一个对象时,jvm到底发生了什么?
据我了解,如果我在写
该语句将创建一个a3
在 jvm 堆栈中命名的句柄,其所有属性都在 JVM 堆中。如果这是正确的,我想知道按值调用是如何工作的。所以,如果我创建一个方法checkMethod(Car c)
并通过说checkMethod(a3);
假设我们的汽车是
在checkMethod
我尝试访问 ausing a3.a = 5;
时,我更改了它的值,a3.a
它将在调用类中显示给我,并且它指向 jvm 在堆中创建的相同字段。
但是当我a3= null;
在调用方法中执行并再次返回我调用的方法
checkMethod(a3)
并尝试查看该对象时,它不为空吗?为什么它的行为与对象的属性不同的是???